2011-11-12 48 views
2

我試圖跟蹤鼠標是否在我的HTML元素內(注意:它也有子元素)。平凡解(這我使用現在)是附加到鼠標懸停/鼠標移開並計數 - 如果有更多的「鼠標懸停」比「mouseouts」,再用鼠標應在。mouseover和mouseout事件可能不匹配?

但我想知道 - 這可能會失敗嗎?這些事件中的任何一個都可能在某些(或多或少的怪異)情況下被「跳過」,使我的計數不匹配?

一些簡單的試驗沒有產生任何這樣的情況,但是然後有很多邊緣情況,我不可能想到它們。有沒有人遇到過這種情況?

說明:我有不是遇到這樣的問題。我想知道如果這樣的問題是可能或不。

補充:案例剛剛來到我的腦海裏 - 一個鼠標懸停/這是從在其處理防止起泡的子元素鼠標移開時。不是我的代碼,但仍有可能。

+0

上述相關元素上方的隱藏元素可能給人的印象是「鼠標懸停」或「鼠標懸停」不起作用? – MatTheCat

+0

如果它們都不起作用,那沒關係。當一個人工作,而另一個人不工作時,情況就是這樣。如果完全可能的話。 –

+0

所以我沒有看到任何情況對不起。 – MatTheCat

回答

0

我有類似的事情發生..讓我瘋狂。我得出了一個假設/結論,至少在我看來,這可能與事件冒泡有關。你使用jQuery嗎?如果你確實需要這個保證,那麼通過未壓縮的庫可能是值得的。否則,如果你的代碼足夠靈活,你可以解決它。這就是我所做的。

+0

你給了我一個主意 - 請參閱帖子編輯。 –

+0

是的,你的編輯更清晰,並在我的目標。很好的「在瞭望」這種事情.. – snapfractalpop

0

冒泡很可能是問題的根源。鼠標移動到內部元素時會出現鼠標懸停事件。 http://www.quirksmode.org/dom/events/mouseover.html

建議使用庫。他們抽象了不會冒泡的mouseenter和mouseleave事件之間的跨瀏覽器差異。 http://api.jquery.com/mouseenter/

如果您不想使用庫,您需要檢查自己在修復計數器之前鼠標是否在您要跟蹤的div內。如果您顯示您的代碼,則更容易向您展示如何解決該問題。

+0

我沒有遇到過問題。我只是想知道這是否可能**。目前我的代碼工作正常。 –