o01*_*o01 45 jquery bind unbind
我有这个功能:
function block_scroll(key){
if (key) {
$(window).bind("scroll", function(){
$('html, body').animate({scrollTop:0}, 'fast');
});
} else {
$(window).unbind();
}
}
Run Code Online (Sandbox Code Playgroud)
第一部分按原样运行,但是当我稍后调用block_scroll(false)时 - 它仍然阻塞.笏呢?
重新编辑 所以我试过......
$(window).unbind("scroll");
Run Code Online (Sandbox Code Playgroud)
......有些困惑.起初它没有用 - 然后它起作用了.
现在我认为它失败了因为我在滚动的时候调用了block_scroll(false).我现在已经多次测试了这个.是的,如果我在脚本运行时没有做任何事情并且调用了block_scroll(false) - 它确实有效.但是,如果我在调用它时滚动它就不会.
ale*_*lex 69
$(window).unbind('scroll');
Run Code Online (Sandbox Code Playgroud)
即使文档说它将删除所有事件处理程序,如果没有参数调用,值得尝试明确解除绑定它.
如果您使用单引号,它会起作用吗?这听起来不对 - 据我所知,JavaScript对单引号和双引号的处理方式相同(与PHP和C等其他语言不同).
Ror*_*san 15
请注意,建议使用的答案unbind()现已过时,因为该方法已被弃用,并将在未来的jQuery版本中删除.
从jQuery 3.0开始,.unbind()已被弃用.它自jQuery 1.7以来被.off()方法取代,所以它的使用已经不鼓励了.
相反,你现在应该使用off():
$(window).off('scroll');
Run Code Online (Sandbox Code Playgroud)