有时候我们在使用 mouseover 和 mouseout 的时候,可能会发生连续触发的情况。这时候我们可以使用下面三个函数来解决这个问题。
_checkHover: function(e, target){
var e = this._getEvent(e);
if(e.type == 'mouseover'){
return !this._contains(target, e.relatedTarget || e.fromElement)
&& !((e.relatedTarget || e.fromElement) === target);
}else{
return !this._contains(target, e.relatedTarget || e.toElement)
&& !((e.relatedTarget || e.toElement) === target);
}
}
_contains: function(parentNode, childNode){
if(parentNode.contains){
return parentNode != childNode && parentNode.contains(childNode);
}else{
return !!(parentNode.compareDocumentPosition(childNode) & 16);
}
}
_getEvent: function(e){
return e || window.event;
}