本文共 1854 字,大约阅读时间需要 6 分钟。
简单的鼠标移动事件:
进入
mouseenter:不冒泡mouseover: 冒泡不论鼠标指针穿过被选元素或其子元素,都会触发 mouseover 事件只有在鼠标指针穿过被选元素时,才会触发 mouseenter 事件
移出
mouseleave: 不冒泡mouseout:冒泡不论鼠标指针离开被选元素还是任何子元素,都会触发 mouseout 事件只有在鼠标指针离开被选元素时,才会触发 mouseleave 事件
我们通过一个案例观察下问题:
给一个嵌套的层级绑定mouseout事件,会发现mouseout事件与想象的不一样
我们发现一个问题mouseout事件:
同样的问题还有mouseover事件,那么在stopPropagation方法失效的情况下我们要如何停止冒泡呢?
jQuery的处理也是如出一辙
jQuery.each({ mouseenter: "mouseover", mouseleave: "mouseout", pointerenter: "pointerover", pointerleave: "pointerout" }, function(orig, fix) { jQuery.event.special[orig] = { delegateType: fix, bindType: fix, handle: function(event) { var ret, target = this, related = event.relatedTarget, handleObj = event.handleObj; // For mousenter/leave call the handler if related is outside the target. // NB: No relatedTarget if the mouse left/entered the browser window if (!related || (related !== target && !jQuery.contains(target, related))) { event.type = handleObj.origType; ret = handleObj.handler.apply(this, arguments); event.type = fix; } return ret; } }; });
本文转自艾伦 Aaron博客园博客,原文链接:http://www.cnblogs.com/aaronjs/p/4241531.html,如需转载请自行联系原作者