我问一个关于jquery滚动事件的具体问题,但似乎答案可能会影响一般的jquery事件(我也有兴趣知道)。
假设jquery插件A
(例如,jquery.scrollspy.js)将滚动事件绑定到$(window)
现在说一些网站导入插件A
,但它也有自己的自定义javascript文件B
,它将另一个.scroll()
事件绑定到$(window)
。
稍后,javascript文件B
想要取消绑定自己的滚动事件,并保持jquery插件A
不变。这是怎么做到的?
和...
这种方法对所有jquery事件都是通用的吗?
答案 0 :(得分:8)
jQuery建议使用on和off而不是bind和unbind。
function scrollEvent()
{
}
$(window).on('scroll',scrollEvent);
$(window).off('scroll',scrollEvent);
答案 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
答案 2 :(得分:0)
这很容易。在提出问题之前,没有做足够的研究:
var fileBScrollEvent = function() {
// do something on scroll event
}
$(window).bind('scroll',fileBScrollEvent);
...稍后在代码中......
$(window).unbind('scroll',fileBScrollEvent);