如下代码:
<div id="outerBox" style="border:1px solid red;width:300;height:300" onmouseout="alert('out')">
<div id="innerBox" style="border:1px solid blue;width:50;height:50">inner</div>
</div>
为什么当我在“innerBox”上移动鼠标时,它是触发警报('out')?
我只希望鼠标输出“outerBox”触发警报('out'),鼠标在“innerBox”上不会触发警报。
很热吗?
感谢所有人:)
答案 0 :(得分:4)
这是mouseout和mouseover事件的标准行为。 Internet Explorer实际上是竞争对手(为了改变),因为它拥有提供您正在寻找的行为的专有事件; onmouseenter
和onmouseleave
。主要缺点是这些事件不是标准的一部分,其他浏览器没有实现它们。
如果你使用jQuery,它有一个很好的跨浏览器实现.mouseleave()
。无论如何,使用框架来处理跨浏览器事件是个好主意。它不一定是jQuery,但我不确定其他人是否有mouseleave
事件。
如果您没有使用jQuery或提供模拟事件的框架,请参阅http://ecmascript.stchur.com/2007/03/15/mouseenter-and-mouseleave-events-for-firefox-and-other-non-ie-browsers/
答案 1 :(得分:2)
我在这里发现了一些看起来像你需要的功能:http://codingrecipes.com/onmouseout-fix-on-nested-elements-javascript