[英]Removing scroll event didn't work as expected
我有以下代码结构:
function somefunc(m) {
function anotherfunc() {
...
if ( m > ...
...
}
console.log($._data(window).events.scroll);
// $(window).off("scroll");
$(window).off("scroll", anotherfunc);
$(window).on("scroll", anotherfunc);
}
checkfunc() {
if (...) {
somefunc("1");
}
else (...) {
somefunc("2");
}
}
$(window).resize(function() {
checkfunc();
});
请不要介意m
和绑定/取消绑定滚动事件的“逻辑”,而我试图通过它来实现的问题(和问题)是为什么我不能取消滚动事件的绑定。
事情是,当我使用:
$(window).off("scroll", anotherfunc);
$(window).on("scroll", anotherfunc);
在上面的示例中,我假设每次在窗口调整大小时,它将取消绑定anotherfunc
先前滚动事件并绑定一个新的滚动事件,但是相反(如console.log($._data(window).events.scroll);
可以看到的那样console.log($._data(window).events.scroll);
每次都会相乘...
为了测试目的,我试图删除$(window).off("scroll", anotherfunc);
而不是放$(window).off("scroll");
,而且令人惊讶的是,它确实取消了所有以前的滚动事件的绑定。
我的问题是,这里有什么区别,因为那里没有其他滚动事件,所以为什么
$(window).off("scroll", anotherfunc);
$(window).on("scroll", anotherfunc);
不能以相同的方式工作?
我认为正确的语法是:
$(window)
.off("scroll") // Remove all scroll events. No callback or other action needed.
.on("scroll", anotherfunc)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.