Javascript MouseOver/MouseOut子事件

Javascript MouseOver/MouseOut子事件,javascript,events,mouseover,children,mouseleave,Javascript,Events,Mouseover,Children,Mouseleave,我有一个元素和一些子元素。当鼠标离开父元素时,我想隐藏父元素及其子元素。我遇到的问题是,当我悬停在任何一个孩子身上时,mouseout事件被触发。最好的预防方法是什么?我真的只希望当鼠标不在父级或其任何子级内时触发事件。事件从子级冒泡到父级(捕获它的位置) 您应该通过添加一个侦听器并使传播停止在那里来捕获子事件 此代码将阻止事件冒泡到父处理程序 function onMouseLeave(e) { if (!e) var e = window.event; e.cancelBub

我有一个元素和一些子元素。当鼠标离开父元素时,我想隐藏父元素及其子元素。我遇到的问题是,当我悬停在任何一个孩子身上时,mouseout事件被触发。最好的预防方法是什么?我真的只希望当鼠标不在父级或其任何子级内时触发事件。

事件从子级冒泡到父级(捕获它的位置)

您应该通过添加一个侦听器并使传播停止在那里来捕获子事件

此代码将阻止事件冒泡到父处理程序

function onMouseLeave(e)
{
    if (!e) var e = window.event;
    e.cancelBubble = true;
    if (e.stopPropagation) e.stopPropagation();
}

问题:mouse off事件是由父级触发的,但不应该触发。将鼠标移到子对象上不应触发父对象的鼠标。如何停止此操作?

您只需要将鼠标移出处理程序连接到父元素。但是

您需要检查父对象是否确实是mouseout事件的目标,而不是从其中一个子对象冒泡出来的事件。检查event.target(W3C)和event.srcElement(IE)

您还需要检查鼠标将要输入的元素是否不是父元素的后代。检查event.relatedTarget(W3C)和event.toElement(IE)

来自:

mouseover
在指针移动到子元素时触发,而
mouseenter
仅在指针移动到绑定元素时触发


同样的情况也适用于
mouseout
vs
mouseleave

我想你的意思是你的
mouseover
/
mouseout
有问题
mouseenter
mouseleave
是专门为不按您所描述的方式工作而设计的。是的,我的错。我的意思是mouseover/mouseout这个问题与我提出的这个问题非常相似