多个滚动事件定义和歧视事件解除绑定

时间:2013-04-21 20:12:56

标签: javascript scroll jquery

我问一个关于jquery滚动事件的具体问题,但似乎答案可能会影响一般的jquery事件(我也有兴趣知道)。

假设jquery插件A(例如,jquery.scrollspy.js)将滚动事件绑定到$(window)

现在说一些网站导入插件A,但它也有自己的自定义javascript文件B,它将另一个.scroll()事件绑定到$(window)

稍后,javascript文件B想要取消绑定自己的滚动事件,并保持jquery插件A不变。这是怎么做到的?

和...

这种方法对所有jquery事件都是通用的吗?

3 个答案:

答案 0 :(得分:8)

jQuery建议使用on和off而不是bind和unbind。

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

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

答案 1 :(得分:5)

最好使用jQuery的.on()和.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/

答案 2 :(得分:0)

这很容易。在提出问题之前,没有做足够的研究:

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


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

...稍后在代码中......

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