創建點擊事件時,我盡我所能將它們綁定一次 - 通常是由所有預期觸發事件的節點共享的父項。然而,我很好奇,mouseover事件的最佳做法是什麼:當鼠標懸停時結果是不斷觸發事件時,將事件綁定到父項是否有意義?什麼是最有效的做法?鼠標懸停時的事件代理
1
A
回答
1
爲了提供一些關閉這個問題,我要套用/報價從這個回答一些相關的注意事項:「Should all jquery events be bound to $(document)?」,這是由@Faust上面提到的:
事件代理並不總是使您的代碼更快。除非您綁定到動態元素或大量元素,否則應該將事件處理函數直接綁定到事件發生的對象,因爲這通常會更有效。
更具體地說,這裏是當需要或有利的事件委託時間:
- 當動態創建要捕獲的事件的對象/刪除,您還是要捕捉他們的事件,而不必明確重新綁定事件處理程序,每次創建新處理程序。
- 當你有很多對象都想要完全相同的事件處理程序(其中地段至少有數百個)。在這種情況下,在設置時綁定一個委託事件處理程序而不是數百個或更多直接事件處理程序可能更有效。請注意,委託事件處理在運行時總是比直接事件處理程序效率低。
- 當您嘗試捕獲文檔中任何元素上發生的事件(在文檔的更高級別)時。
- 當您的設計明確使用事件冒泡和stopPropagation()來解決頁面中的某些問題或功能時。
原來的答覆由@ jfriend00
0
您還可以停止事件的傳播。這裏更多的信息:http://api.jquery.com/event.stoppropagation/這裏event.preventDefault() vs. return false
1
所以,我知道這個問題是早就死了,但我想我可能也有辦法做到這一點回答。
使用動態元素,您可以在父div /容器上建立mousemove偵聽器,然後在div中查詢具有:hover屬性的元素。
例如:
<div class="list-container">
<ul class="dynamic-list-content">
<!-- actual list elements provided by js -->
</ul>
</div>
然後:
var listContainer = document.querySelector('.list-container');
listContainer.addEventListener('mousemove', function(e) {
var hovered = listContainer.querySelector('li:hover');
// do something with the hovered element here.
});
注意(你提到),這將激發很多,但沒有超過,如果你添加一個mouseMove事件偵聽到個人條目。而且你可以使用數據屬性,獨特的ID等來消除這一點。從我的測試來看,它在Chrome中表現非常好。
相關問題
- 1. Javascript鼠標懸停事件代理Squirrely
- 2. 與懸停事件或鼠標懸停
- 3. 帶超時的鼠標懸停事件
- 4. Jquery鼠標懸停事件
- 5. C++鼠標懸停事件
- 6. SVG組鼠標懸停/鼠標事件
- 7. 沒有在鼠標懸停/鼠標懸停定義jQuery事件
- 8. 懸停事件第一次調用鼠標時停止鼠標輸入事件。
- 9. clearTimeout鼠標懸停事件不清除setoutout鼠標事件
- 10. jQuery的鼠標懸停效果錯誤,鼠標懸停事件總是在鼠標懸停觸發幾次
- 11. 繞過iOS的鼠標懸停事件
- 12. IE6:jQuery的pngfix +鼠標懸停事件
- 13. 日曆中的鼠標懸停事件
- 14. NSMenu的鼠標懸停事件
- 15. jQuery - 活的鼠標懸停事件
- 16. 與Bodymovin JS的鼠標懸停事件
- 17. xul menubutton上的鼠標懸停事件
- 18. JSTree上的鼠標懸停事件
- 19. jQuery的鼠標懸停事件發出
- 20. image.Advice上的jQuery鼠標懸停事件?
- 21. 在WPF中的鼠標懸停事件?
- 22. 鼠標事件的延遲懸停
- 23. MVC中的鼠標懸停事件
- 24. 對silverlight的鼠標懸停/懸停事件的淡化效果?
- 25. 在jQuery中懸停/鼠標懸停事件的下拉菜單
- 26. InfoPath&C#:鼠標懸停/懸停事件的計算值
- 27. 導航欄鏈接的鼠標懸停/懸停事件
- 28. 觸發鼠標懸停事件使用jQuery的css懸停
- 29. 如何在鼠標懸停事件
- 30. HTML5畫布鼠標懸停事件
這個答案可能是相關的:http://stackoverflow.com/a/12824698/613004 - 問題將所有事件綁定到文檔,這是不同於我們的問題,但長答案仍然適用的信息。 – Faust
這真的很有幫助。謝謝。 –