diff --git a/src/event.js b/src/event.js index 05e79d35..2bed0904 100644 --- a/src/event.js +++ b/src/event.js @@ -654,6 +654,9 @@ var withinElement = function( event ) { // Check if mouse(over|out) are still within the same parent element var parent = event.relatedTarget; + // set the correct event type + event.type = event.data; + // Firefox sometimes assigns relatedTarget a XUL element // which we cannot access the parentNode property of try { @@ -663,15 +666,13 @@ var withinElement = function( event ) { if ( parent && parent !== document && !parent.parentNode ) { return; } + // Traverse up the tree while ( parent && parent !== this ) { parent = parent.parentNode; } if ( parent !== this ) { - // set the correct event type - event.type = event.data; - // handle event if we actually just moused on to a non sub-element jQuery.event.handle.apply( this, arguments ); } diff --git a/test/delegatetest.html b/test/delegatetest.html index c4f33aae..a5c6db17 100644 --- a/test/delegatetest.html +++ b/test/delegatetest.html @@ -183,6 +183,16 @@ DOCUMENT + +

Mouseleave Tests

+ +
+

Count mouse leave event

+
+

mouse over here should not trigger the counter.

+
+

0

+
@@ -270,6 +280,10 @@ jQuery("#boundSubmit").blink(); }); +var n = 0; +$("div.out").live("mouseleave", function() { + $("p:last", this).text(++n); +});