Skip to content

Commit f9d21e7

Browse files
committed
Fixed mouseout event, to act like mouseleave. Many thanks to @Aratramba.
1 parent 964965d commit f9d21e7

File tree

1 file changed

+27
-3
lines changed

1 file changed

+27
-3
lines changed

hammer.js

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*
22
* Hammer.JS
3-
* version 0.3
3+
* version 0.4
44
* author: Eight Media
55
* https://github.com/EightMedia/hammer.js
66
*/
@@ -34,7 +34,6 @@ function Hammer(element, options, undefined)
3434
};
3535
options = mergeObject(defaults, options);
3636

37-
3837
// some css hacks
3938
(function() {
4039
if(!options.css_hacks) {
@@ -472,13 +471,38 @@ function Hammer(element, options, undefined)
472471
else {
473472
// Listen for mouseup on the document so we know it happens
474473
// even if the mouse has left the element.
475-
element.addEventListener("mouseout", handleEvents, false);
474+
element.addEventListener("mouseout", function(event) {
475+
if(!isInsideHammer(element, event.relatedTarget)) {
476+
handleEvents(event);
477+
}
478+
}, false);
476479
element.addEventListener("mouseup", handleEvents, false);
477480
element.addEventListener("mousedown", handleEvents, false);
478481
element.addEventListener("mousemove", handleEvents, false);
479482
}
480483

481484

485+
/**
486+
* find if element is (inside) given parent element
487+
* @param object element
488+
* @param object parent
489+
* @return bool inside
490+
*/
491+
function isInsideHammer(parent, child) {
492+
if(parent === child){
493+
return true;
494+
}
495+
var node = child.parentNode;
496+
while(node !== null){
497+
if(node === parent){
498+
return true;
499+
};
500+
node = node.parentNode;
501+
}
502+
return false;
503+
}
504+
505+
482506
/**
483507
* merge 2 objects into a new object
484508
* @param object obj1

0 commit comments

Comments
 (0)