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

Col*_*gan 8 javascript jquery scroll

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

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

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

稍后,javascript文件B想要取消绑定它自己的滚动事件,并A保持jquery插件完好无损.这是怎么做到的?

和...

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

Rub*_*n-J 8

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

function scrollEvent()
{
}
$(window).on('scroll',scrollEvent);
$(window).off('scroll',scrollEvent);
Run Code Online (Sandbox Code Playgroud)

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


小智 5

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

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

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

$(window).on('scroll.myscroll', function () { 
    // do something on scroll event
});
Run Code Online (Sandbox Code Playgroud)

一个书房......

$(window).off('scroll.myscroll'); // unbind my namespaced scroll event
Run Code Online (Sandbox Code Playgroud)

请参阅https://css-tricks.com/namespaced-events-jquery/