onmouseover在click和mouseout事件之前被解雇了?

时间:2012-03-29 19:57:23

标签: javascript javascript-events mousemove

当我试图回答时,

Unusable links with onmouseover()得到了一个有趣的问题。经过一些记录实验后,我设置了http://jsfiddle.net/RnGxP/1/。最后两个示例按预期工作,单击“关闭”或离开“关闭”div时隐藏。

前两个示例在鼠标移动时将<{1}}设置为div (我自己从不这样做,但是......)。 因此,当将鼠标移动到其中一个时,它们会被扩展。并且在链接或“关闭”div上进一步移动鼠标,会触发更多移动事件。

但是,然后单击第二个示例中的关闭按钮 - 不移动鼠标 - 而不是单击事件,将触发两个mousemove事件! 这里究竟发生了什么?我可以理解点击事件在重置innerHTML时会以某种方式丢失(失去其目标?),但为什么在移动之前触发了mousemove事件 < /强>

1 个答案:

答案 0 :(得分:1)

您正在重写innerHTML事件中div元素的mouseover。这意味着每次移动鼠标时,它实际上是在新节点上移动,这会在该节点上触发新的mouseover事件,该事件会冒泡到div元素,从而重写{{ 1}}等等。

因此,当innerHTML事件触发内部mouseout时,div事件已经重写了外mouseover上的innerHTML,并且所以内部div没有父...

您真正想要使用的是div事件(可能是内部mouseenter上的mouseleave事件),它曾经是Internet Explorer的专有事件,但根据{{{ 3}} Firefox 10和Opera 11.10也支持它。