2010-06-10 68 views
2

如下代碼:約onmouseout事件

<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> 

爲什麼當我移動鼠標的「內盒個數」,這是觸發警報(「出」)?

我只想將鼠標移出「outerBox」觸發警報('out'),鼠標放在「innerBox」上時不會觸發警報。

熱做到這一點?

感謝所有:)

+0

謝謝你,我會刪除它。 – Koerr 2010-06-10 10:57:13

回答

4

這是鼠標移開鼠標懸停和事件的標準行爲。 Internet Explorer實際上是在這裏進行競爭(對於一個變化),因爲它擁有專有的事件,可以提供您正在尋找的行爲; onmouseenteronmouseleave。主要的缺點是這些事件不是標準的一部分,其他瀏覽器尚未實現。

如果您使用jQuery,它與.mouseleave()有很好的跨瀏覽器實現。無論如何,使用框架來處理跨瀏覽器事件是一個好主意。它不一定是jQuery,但我不確定其他人是否有mouseleave事件。

如果你不使用jQuery或提供模擬事件的框架,看到http://ecmascript.stchur.com/2007/03/15/mouseenter-and-mouseleave-events-for-firefox-and-other-non-ie-browsers/

+1

原型也模擬'mouseenter'和'mouseleave',FWIW – 2010-06-10 11:45:03

+0

@ T.J。謝謝,我會記住的。我真的不知道有哪些其他框架。我知道[quirksmode.org](http://www.quirksmode.org/dom/events/mouseover.html#t10)一直在大肆宣傳其他瀏覽器暫時不支持的事件,並沒有太多成功:-) – 2010-06-10 11:59:34

+0

的頭:是的,有點令人驚訝,尤其是考慮到它是多麼容易!即使Chrome本身並沒有它們。 – 2010-06-10 13:42:20