JavaScript Mouseover Mouseout

有时候我们在使用 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;
}

你可能感兴趣的:(JavaScript,mouse)