Skip to content
Permalink
Browse files

Make sure that mouseenter/mouseleave fire on the correct element when…

… doing delegation. Fixes #9069.
  • Loading branch information...
jeresig committed May 10, 2011
1 parent 521ae56 commit 419b5e5e2a0d376e71c3f37bf9a3d96f3b4a67f2
Showing with 18 additions and 3 deletions.
  1. +4 −3 src/event.js
  2. +14 −0 test/delegatetest.html
@@ -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 );
}
@@ -183,6 +183,16 @@ <h2>Submit Tests</h2>
<td id='boundSubmit' class="red">DOCUMENT</td>
</tr>
</table>

<h1>Mouseleave Tests</h1>

<div class="out" style="margin:20px; border:1px solid #000; background: red;">
<p>Count mouse leave event</p>
<div class="in" style="background: green; margin: 10px auto; width: 50%;">
<p>mouse over here should not trigger the counter.</p>
</div>
<p>0</p>
</div>

<ul id="log"></ul>

@@ -270,6 +280,10 @@ <h2>Submit Tests</h2>
jQuery("#boundSubmit").blink();
});
var n = 0;
$("div.out").live("mouseleave", function() {
$("p:last", this).text(++n);
});
</script>
</body>
</html>

0 comments on commit 419b5e5

Please sign in to comment.
You can’t perform that action at this time.