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
(class
outer
)而不是从其子级获取触发的事件?

这是正确的行为:您在父
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。