Javascript 多个滚动事件定义和区分性事件解除绑定

Javascript 多个滚动事件定义和区分性事件解除绑定,javascript,scroll,jquery,Javascript,Scroll,Jquery,我问了一个关于jQueryScroll事件的特定问题,但答案似乎对jQueryEvents具有普遍意义(我也有兴趣了解这一点) 假设jquery插件A(例如jquery.scrollspy.js)将滚动事件绑定到$(窗口) 现在假设某个站点导入插件A,但它也有自己的自定义javascript文件B,该文件将另一个.scroll()事件绑定到$(窗口) 稍后,javascript文件B希望解除其自身滚动事件的绑定,并保持jquery插件A不变。这是怎么做到的 而且 这个方法对所有jquery事件都

我问了一个关于jQueryScroll事件的特定问题,但答案似乎对jQueryEvents具有普遍意义(我也有兴趣了解这一点)

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

现在假设某个站点导入插件
A
,但它也有自己的自定义javascript文件
B
,该文件将另一个
.scroll()
事件绑定到
$(窗口)

稍后,javascript文件
B
希望解除其自身滚动事件的绑定,并保持jquery插件
A
不变。这是怎么做到的

而且


这个方法对所有jquery事件都通用吗?

这很简单。在提出问题之前没有做足够的研究:

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


$(window).bind('scroll',fileBScrollEvent);
…稍后在代码中

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

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

function scrollEvent()
{
}
$(window).on('scroll',scrollEvent);
$(window).off('scroll',scrollEvent);
最好使用jQuery的.on()和.off()方法,而不是.bind()和.unbind()

从jQuery1.7开始,.on()方法是将事件处理程序附加到文档的首选方法

还可以通过向事件名称添加自定义后缀来命名事件的名称空间。然后,您可以稍后访问该特定事件(例如取消绑定)

一个洞穴

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

请参阅

,了解那些有兴趣在没有jQuery的情况下执行此操作的人:解决方案没有错,但jQuery更喜欢使用on和off(从1.7开始)。
$(window).off('scroll.myscroll'); // unbind my namespaced scroll event