8

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

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

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

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

和...

这种方法是否适用于所有 jquery 事件?

4

3 回答 3

8

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

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

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

于 2013-04-21T20:42:28.487 回答
6

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

于 2015-03-02T08:48:07.060 回答
0

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

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


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

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

$(window).unbind('scroll',fileBScrollEvent);
于 2013-04-21T20:18:05.540 回答