Skip to content

Commit

Permalink
fix(jqLite): mouseenter/-leave should not trigger on child elements
Browse files Browse the repository at this point in the history
Mouseenter and mouseleave events were triggered on children of the
element they were bound to.
Change this to the expected behaviour, to only be triggered when
leaving/entering the actual element, not its children.

Closes angular#2131
  • Loading branch information
florianorben committed Mar 10, 2013
1 parent 90ba9aa commit c2d1873
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 7 deletions.
10 changes: 5 additions & 5 deletions src/jqLite.js
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -607,20 +607,20 @@ forEach({

if (!eventFns) {
if (type == 'mouseenter' || type == 'mouseleave') {
var counter = 0;
var entered = false;

events.mouseenter = [];
events.mouseleave = [];

bindFn(element, 'mouseover', function(event) {
counter++;
if (counter == 1) {
if (!entered) {
entered = true;
handle(event, 'mouseenter');
}
});
bindFn(element, 'mouseout', function(event) {
counter --;
if (counter == 0) {
if (entered && indexOf(element.getElementsByTagName('*'), (event.toElement || event.relatedTarget)) === -1) {
entered = false;
handle(event, 'mouseleave');
}
});
Expand Down
2 changes: 0 additions & 2 deletions test/jqLiteSpec.js
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -798,8 +798,6 @@ describe('jqLite', function() {
child.mouseover();
expect(log).toEqual('parentEnter;childEnter;');

child.mouseout();
expect(log).toEqual('parentEnter;childEnter;');
child.mouseout();
expect(log).toEqual('parentEnter;childEnter;childLeave;');
parent.mouseout();
Expand Down

0 comments on commit c2d1873

Please sign in to comment.