我有一个带有子元素的元素。当鼠标离开父元素时,我想隐藏父元素和它的子元素。问题是当我悬停在任何子元素上时,mouseout事件被触发。最好的方法是什么?我只想在鼠标不在父元素或其任何子元素内时触发事件。
我有一个带有子元素的元素。当鼠标离开父元素时,我想隐藏父元素和它的子元素。问题是当我悬停在任何子元素上时,mouseout事件被触发。最好的方法是什么?我只想在鼠标不在父元素或其任何子元素内时触发事件。
事件从子元素冒泡到父元素(在那里被捕获)
您应该在子元素上添加监听器并停止传播来捕获事件。
这段代码将阻止事件冒泡到父级处理程序。
function onMouseLeave(e)
{
if (!e) var e = window.event;
e.cancelBubble = true;
if (e.stopPropagation) e.stopPropagation();
}
问题:当鼠标移到子元素上时,父级触发了鼠标离开事件,这是不应该的。我们如何阻止这种情况发生?
来自http://api.jquery.com/mouseover/:
mouseover
事件在指针移动到子元素时也会触发,而mouseenter
事件仅在指针移动到绑定元素时触发。
mouseout
和mouseleave
同理。
mouseover
/mouseout
。mouseenter
和mouseleave
被专门设计成不按照你所描述的方式运行。 - Crescent Fresh