多个滚动事件定义,以及歧视性事件解除绑定

Multiple scroll event definition, and discriminatory event unbinding

本文关键字:事件 歧视性 绑定 滚动 定义      更新时间:2023-09-26

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

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

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

后来,javascript文件B想要解除绑定自己的滚动事件,并留下jquery插件A完好无损。这是如何做到的呢?

这个方法是通用的所有jquery事件吗?

jQuery建议使用on和off来代替bind和unbind。

function scrollEvent()
{
}
$(window).on('scroll',scrollEvent);
$(window).off('scroll',scrollEvent);
http://api.jquery.com/on/

最好使用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/

这很简单。在问问题之前没有做足够的调查:

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

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

…后面的代码中…

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