2009-10-05 76 views
2

有時候會有很多的mouseover事件,而$(「*」)選擇器可能很貴。這會減慢我的網頁在運行IE6的慢速機器上爬行嗎?

有沒有更好的方法來做到這一點?我想知道發生在頁面上的每個鼠標懸停事件。

回答

4

只是做$('body')。這將爲<body>元素分配一個處理程序,並且每個後代元素(因此,頁面中的每個元素)都會將其懸停的鼠標懸停事件置於該點。你所需要的處理程序裏面做的是檢查事件的發起者找到確切的元素:

$('body').mouseover(function(e) { 
    var sender = e.target; 
    //sender is the element who was moused over 
}); 

的關鍵是不要做任何處理程序中過於密集,因爲它基本上會被不斷的射擊用戶在您的頁面上移動鼠標。最好首先檢查可能的最嚴格條件,並儘可能經常儘早退出方法。

+1

+1,但請注意,它允許mouseover事件執行'stopPropagation()'(其中'live()'不),所以它可能無法滿足瞭解所有鼠標懸停的需求。 – chaos 2009-10-05 23:40:09

+1

是的。也許假設如果開發人員想要對每個鼠標懸停做出反應,他/她都不會去取消它們:) – 2009-10-05 23:42:37

+0

這不會是開發人員自己的代碼,它可能與插件和插件相關這樣。 – chaos 2009-10-06 00:28:44

3

我打算在這裏出現一個肢體,並說,看着表情讓我的牙齒受傷的方式來看,這實際上可能是不好的做法。

但是,如果你絕對必須知道每一個鼠標懸停,它可能是最好的東西。然而,我會質疑這種需要,並假設你相信它將爲你實現的目標可以以優越的方式實現。

+0

你說得對,這很糟糕。然而,沒有必要爲每個元素分配不同的處理程序,以知道每個元素何時被隱藏。 – 2009-10-05 23:37:49

相關問題