Pertex: onmouseout

Hallöchen,
ich glaube, ich habe ein Verständnisproblem mit onmouseout. Bei folgender Testseite würde ich erwarten, dass onmouseout erst getriggert wird, wenn die Maus aus der Tabelle herausbewegt wird. Anscheinend wird aber schon getriggert, wenn man von einer zur anderen Zelle wechselt. Hätte jemand einen Vorschlag, wie man ein onmouseout umsetzen kann, das nur ausgelöst wird, wenn man die Tabelle komplett verlässt?
Vielen Dank
Pertex

<html><head></head>
<body>
<script language="JavaScript">
function TableOut() {
alert("dddd");
}
</script>
<table onmouseout="TableOut();">
<tr><td>test1</td><td>test2
</td></tr>
<tr><td>test3</td><td>
</td></tr>
</table>
</body>
</html>

  1. Hallo,

    Anscheinend wird aber schon getriggert, wenn man von einer zur anderen Zelle wechselt.

    Ja, weil dabei mouseout-Events bei den td-Elementen passieren. Diese steigen auf (Bubbling) und lösen beim table-Element den mouseout-Handler aus.

    Hätte jemand einen Vorschlag, wie man ein onmouseout umsetzen kann, das nur ausgelöst wird, wenn man die Tabelle komplett verlässt?

    Verwende das Ereignis mouseleave statt mouseout. Das bubblet nicht und feuert nur, wenn die Maus wirklich die Fläche des Elements samt der Flächen der Kindelemente verlässt.

    Für ältere Browser, die das Ereignis nicht unterstützen, muss man testen, ob das Element, zu dem sich der Mauszeiger bewegt, im fraglichen Element oder außerhalb liegt:
    http://molily.de/temp/mouseenter-mouseleave.html

    Bibliotheken wie jQuery simulieren das Ereignis, sodass man direkt auf mouseenter/mouseleave hören kann.

    Mathias

    1. Super! Danke