2013-04-21 50 views
8

我問了一個關於jQuery滾動事件的具體問題,但似乎答案可能會影響jQuery事件(我也有興趣知道)。多滾動事件定義和歧視性事件解除綁定

假設jQuery插件A(例如,jquery.scrollspy.js)結合滾動事件$(window)

現在說,一些網站的插件進口A,但它也有自己的定製JavaScript文件B,結合另一個.scroll()事件到$(window)

稍後,javascript文件B想要解除自己的滾動事件,並保持jquery插件A不變。這是如何完成的?

和...

是這種方法普遍的所有jQuery的事件?

+0

對於那些有興趣做這個沒有jQuery的: http://stackoverflow.com/questions/4402287/javascript-remove-event-listener – 2013-04-21 20:22:00

回答

8

jQuery的建議使用和關閉,而不是綁定和取消綁定。

function scrollEvent() 
{ 
} 
$(window).on('scroll',scrollEvent); 
$(window).off('scroll',scrollEvent); 

http://api.jquery.com/on/

0

這很簡單。問問題之前沒有做足夠的研究:

var fileBScrollEvent = function() { 
    // do something on scroll event 
} 


$(window).bind('scroll',fileBScrollEvent); 

...後來在代碼...

$(window).unbind('scroll',fileBScrollEvent); 
+0

解決方案沒有錯,但jQuery更喜歡使用on和off(自1.7)。 – 2013-04-21 20:43:41

5

最好使用jQuery的。對()和.off()方法,而不是.bind()和.unbind()。

從jQuery 1.7開始,.on()方法是將事件處理程序附加到文檔的首選方法。

您還可以通過爲事件名稱添加自定義後綴命名空間事件。您可以稍後再訪問該特定事件(解除綁定爲例)...

$(window).on('scroll.myscroll', function() { 
    // do something on scroll event 
}); 

的巢穴......

$(window).off('scroll.myscroll'); // unbind my namespaced scroll event 

https://css-tricks.com/namespaced-events-jquery/