正确跟踪哪个(嵌套的)div 具有鼠标悬停

8

我有一个(深度)嵌套的<div>结构。使用Javascript,我想跟踪鼠标当前所在的元素(即,“拥有焦点”的元素),其中更深层次的嵌套元素具有优先权:

Desired mouse-over behavior in nested divs

我尝试了mouseovermouseoutmouseentermouseleavemousemove的组合,但好像没有简单的解决方案能给我期望的行为。我能够在正确的
上接收鼠标事件,但通常这些事件随后会被更高层次的

谢谢你。我曾经遇到过类似的问题,但是你的解决方案帮了我很多。 - Sidd
2个回答

3

2
这是一个普通的方法 https://developer.mozilla.org/zh-CN/docs/Web/API/event.stopPropagation - Paul S.
谢谢,已更新答案。之前使用 jQuery 而不是原生 JS 真的很抱歉。 - Meligy
谢谢!正确使用stopPropagation是我缺失的拼图。:-)然而,它不适用于mouseenter。我必须使用mouseover才能使其正常工作。这里有一个fiddle来展示我的工作代码。也许你可以调整你的答案。事实上,如果你能解释为什么mouseover在这里起作用,而mouseenter则不行,那将非常有帮助。---干杯! - mhelvens
感谢您的回答。我调整了答案。我的猜测是mouseenter事件发生得非常快,因此它首先发生在out DVI上,而浏览器可能需要等待一段时间才能触发mouseover事件。移动浏览器中也会出现类似的情况,滑动和点击之间有一个300毫秒的等待时间,以防止您正在点击以开始滑动等操作。 - Meligy

1
对于非IE浏览器和IE >= 9,请使用以下内容:
    evt.stopPropagation();

对于旧版IE浏览器(IE<9),请使用以下代码:
    evt.cancelBubble = true;

这将防止事件冒泡到父元素。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接