onmouseout scheint zu oft bzw. falsch zu triggern
Christian S.
- javascript
0 wahsaga
Hi,
ich habe ein <div>, dass sich beim onmouseout versteckt (visibility:hidden).
Nur irgendwie scheint onmouseout auch zu triggern wenn ich mich mit der Maus noch innerhalb des DIVs befinde, da es sich dann einfach schließt. In dem DIV befinden sich weitere Elemente (table, tr, td, und a).
Weiß jmd woran das liegt??
Habe auch mit Firebug schon debuggt. im event objekt ist das relatedTarget auch immer null.
Benutze ich ein setTimeout um das div erst nach 1 ms zu schließen und cleare dieses timeout beim onmouseover des divs, dann gehts.
Gruß
Christian
hi,
Nur irgendwie scheint onmouseout auch zu triggern wenn ich mich mit der Maus noch innerhalb des DIVs befinde, da es sich dann einfach schließt. In dem DIV befinden sich weitere Elemente (table, tr, td, und a).
Weiß jmd woran das liegt??
Daran, dass du ein Nachfahrenelement des Divs überfährst - dann feuert am Div selber natürlich onmouseout.
Um das zu verhindern, musst du entweder das Event Bubbling von den Nachfahrenelementen aus unterbinden, oder im mouseout des Divs abfragen, ob das targetElement des aktuellen Events ein Nachfahre des Divs ist (letzteres erfordert Browserübergreifend etwas Aufwand, http://www.quirksmode.org/js/contents.html#events erläutert das ganze recht gut).
gruß,
wahsaga
Hi,
verstehe so ungefähr... scheinbar feuert onmouseout auch, wenn ich INNERhalb des DIVs auf ein anderes Element gehe...
Das ist doch total sinnlos, da man ja immernoch im div ist.
Um das zu verhindern, musst du entweder das Event Bubbling von den Nachfahrenelementen aus unterbinden, oder im mouseout des Divs abfragen, ob das targetElement des aktuellen Events ein Nachfahre des Divs ist
eher fragen ob das target == das div ist. nur dann das div hiden.
Hab ich probiert, aber das geht auch nicht (siehe mein erster Satz).
und manchmal scheint der Browser auch nicht mitzukriegen, wenn man ganz schnell mit der Maus aus dem Div geht, dass das target kurzzeitig(?) das div selber war...
sonst lass ich es einfach bei meinem setTimout workaround...
Gruß
Christian