jQuery通过滚动切换.on()和.off()

jQuery通过滚动切换.on()和.off(),jquery,Jquery,我不知道该怎么做。我有一个按钮上的滚动效果。但我只想在用户位于页面顶部时启动它。当他离开“高度”时,我想把它转过来。如果他回到“高度”,我想把它打开 我试过这个jQuery $(document).ready(function(){ $('.navbar-toggle').click(function(){ $("html, body").animate({ scrollTop: 220 }, "slow"); }); }); var height = $

我不知道该怎么做。我有一个按钮上的滚动效果。但我只想在用户位于页面顶部时启动它。当他离开“高度”时,我想把它转过来。如果他回到“高度”,我想把它打开

我试过这个jQuery

$(document).ready(function(){

    $('.navbar-toggle').click(function(){
         $("html, body").animate({ scrollTop: 220 }, "slow");
    });

});

var height = $(window).height();

$(window).scroll(function() {
    if ($(document).scrollTop() > height) {
        $('navbar-toggle').off('click');
    } else {
        $('navbar-toggle').on('click');

    }
});
但它不起作用,我不知道如何修复它。如果你们能帮我,那就太好了!:)


提前感谢

您的代码中几乎没有错误。。 首先,你不应该这样做

$('navbar-toggle').off('click');
处理程序丢失,这意味着该元素的所有单击事件将被取消

另外,选择器中缺少点,它应该是$
('.navbar toggle')

因此,我建议将函数保存到变量中,如下所示:

var myHandler = function(){
    $("html, body").animate({ scrollTop: 220 }, "slow");
};
$(document).ready(function(){
   var myHandler = function(){
        $("html, body").animate({ scrollTop: 220 }, "slow");
   };

   $('.navbar-toggle').on('click', myHandler);

   $(window).scroll(function() {
       if ($(document).scrollTop() > 0) {
           $('.navbar-toggle').off('click', myHandler);
       } else {
           $('.navbar-toggle').on('click', myHandler);
       }
   });
});
然后您可以轻松地执行以下操作:

$('.navbar-toggle').on('click', myHandler);
$('.navbar-toggle').off('click', myHandler);
但我只想在用户位于页面顶部时启动它

为此,您不需要计算高度,只需检查
if($(document).scrollTop()>0)

最终的代码应该是这样的:

var myHandler = function(){
    $("html, body").animate({ scrollTop: 220 }, "slow");
};
$(document).ready(function(){
   var myHandler = function(){
        $("html, body").animate({ scrollTop: 220 }, "slow");
   };

   $('.navbar-toggle').on('click', myHandler);

   $(window).scroll(function() {
       if ($(document).scrollTop() > 0) {
           $('.navbar-toggle').off('click', myHandler);
       } else {
           $('.navbar-toggle').on('click', myHandler);
       }
   });
});

查看

哦,是的!谢谢,这是一个很好的方法!