$(窗口)的jQuery绑定/取消绑定“滚动”事件
我有这个function:
function block_scroll(key){ if (key) { $(window).bind("scroll", function(){ $('html, body').animate({scrollTop:0}, 'fast'); }); } else { $(window).unbind(); } }
第一部分是应该的,但是当我稍后调用block_scroll(false)时,它仍然是阻塞的。 笏呢?
重新编辑所以build议我试着…
$(window).unbind("scroll");
…有些困惑。 起初它不起作用 – 然后它工作。
现在我认为它失败了,因为我正在滚动block_scroll(false)被调用的那一刻。 我已经testing过几次了。 是的,如果我在脚本运行和block_scroll(false)被调用的时候什么也不做,它确实有效。 但是如果我在被调用的时候滚动的话。
$(window).unbind('scroll');
即使文档说,如果调用没有参数,它将删除所有的事件处理程序,值得尝试明确解除绑定它。
更新
它工作,如果你使用单引号? 这听起来不对 – 就我所知,JavaScript将单引号和双引号视为相同(不像PHP和C等其他语言)。
请注意,提示使用unbind()
的答案现在已经过期,因为该方法已被弃用 ,并将在未来版本的jQuery中被删除。
从jQuery 3.0开始,.unbind()已经被弃用了。 自从jQuery 1.7以来,它被.off()方法所取代,所以它的使用已经不受欢迎了。
相反,你现在应该使用off()
:
$(window).off('scroll');
你需要:
unbind('scroll')
目前你没有指定事件解除绑定。
非常古老的问题,但如果有人绊倒它,我会build议尝试:
$j("html, body").stop(true, true).animate({ scrollTop: $j('#main').offset().top }, 300);
尝试这个:
$(window).unbind('scroll');
它在我的项目中工作