Javascript 仅对子级激发的父级mousenter/mouseleave事件
考虑以下几点:Javascript 仅对子级激发的父级mousenter/mouseleave事件,javascript,jquery,mouseenter,mouseleave,Javascript,Jquery,Mouseenter,Mouseleave,考虑以下几点: 如何从父div(classouter)而不是从其子级获取触发的事件?这是正确的行为:您在父div上捕获了事件,但事件的实际发送者,即触发事件的元素,是内部div(这可能是因为@squint所说的父div和内部div之间没有空格。)这就是e.target的用途。事件处理程序上下文中的此属性始终为您提供处理事件的元素 $('.outer').on('mouseenter',function(e){alert($(this).attr('class'));}); JSFIddle:
如何从父
div
(classouter
)而不是从其子级获取触发的事件?这是正确的行为:您在父div
上捕获了事件,但事件的实际发送者,即触发事件的元素,是内部div
(这可能是因为@squint所说的父div和内部div之间没有空格。)这就是e.target
的用途。事件处理程序上下文中的此
属性始终为您提供处理事件的元素
$('.outer').on('mouseenter',function(e){alert($(this).attr('class'));});
JSFIddle:
阅读此文了解详细信息和示例:将代码发布在此处,而不仅仅是发布在另一个网站上。22个月后,30个问题和5个答案,我想你会知道这一点。在非IE浏览器中,你实际上无法阻止事件在孩子身上触发。jQuery提供了一个修复程序,使你的处理程序只在最外层的元素上被调用,即使事件确实发生了。您的演示的问题是外部和内部之间没有填充/边距,因此
e.target
将是内部。我不知道为什么jQuery在这种情况下不修复e.target
。看起来像个bug。