mouseover和mouseout事件可能不匹配吗?

时间:2011-11-12 22:50:39

标签: javascript events

我正在尝试跟踪鼠标是否在我的HTML元素中(注意:它也有子元素)。简单的解决方案(我现在正在使用)是附加到鼠标悬停 / mouseout 并计算它们 - 如果还有更多“ mouseovers “比” mouseouts “,然后鼠标应该在。

之内

但我想知道 - 这会失败吗?在某些(或多或少奇怪的)情况下,这些事件中的任何一个都可以被“跳过”,从而使我的计数不匹配吗?

一些简单的试验没有产生任何这样的情况,但是有很多边缘情况,我不可能全部想到它们。有没有人遇到过这样的情况?

澄清:遇到了这样的问题。我想知道这个问题是否可能

已添加:我想到了一个案例 - 一个子元素上的鼠标悬停 / mouseout ,这个子元素在其处理程序中无法冒泡。不是我的代码的情况,但仍有可能。

2 个答案:

答案 0 :(得分:0)

我发生了类似的事情......让我发疯。我得出的假设/结论是,至少在我的情况下,它可能与事件冒泡有关。你在用jquery吗?通过未压缩的库可能值得一试..如果你真的需要保证。否则,如果您的代码足够灵活,您可以解决它...这就是我所做的。

答案 1 :(得分:0)

冒泡很可能是问题的根源。当鼠标移动到内部元素时,您会收到mouseout事件。 http://www.quirksmode.org/dom/events/mouseover.html

建议,使用库。它们抽象了不会冒泡的mouseenter和mouseleave事件之间的跨浏览器差异。 http://api.jquery.com/mouseenter/

如果您不想使用库,则需要检查自己是否在修复计数器之前鼠标位于您正在跟踪的div中。如果您显示所拥有的代码,则可以更轻松地向您展示如何修复它。