Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jquery动画滚动到滚动上的位置_Jquery_Scroll_Position - Fatal编程技术网

jquery动画滚动到滚动上的位置

jquery动画滚动到滚动上的位置,jquery,scroll,position,Jquery,Scroll,Position,很多相关的问题,但不幸的是不是我要找的 我正试着做这个函数。当用户使用scroll函数时,它向下滚动550px,下一次再次滚动550px,等等。我写了下面的代码,但函数似乎运行在一个循环中。你知道怎么解决这个问题吗?谢谢 var start=0; $( window ).scroll(function() { var body = $("html, body"); start+=550; body.animate({scrollTop: start}, '2000'

很多相关的问题,但不幸的是不是我要找的

我正试着做这个函数。当用户使用scroll函数时,它向下滚动550px,下一次再次滚动550px,等等。我写了下面的代码,但函数似乎运行在一个循环中。你知道怎么解决这个问题吗?谢谢

var start=0;
$( window ).scroll(function() {
    var body = $("html, body");
   start+=550;
        body.animate({scrollTop: start}, '2000', 'swing', function() { 
            return;
        });
});

实际上,每次启动滚动事件时,您都要尝试设置滚动位置的动画,这是非常多次的。因此,当您想要滚动到550时,jQuery仍在忙于尝试将动画设置为500。2秒是很长的时间。为了给你一个想法,想象一下10多个动画同时在同一个元素上运行2秒钟,所有这些动画都有不同的参数

有几种方法可以解决这个问题。在这种情况下,最好的方法是使用一个去抖器,有时也称为节流器

简单的修复方法可能是告诉jQuery它当前正在运行的动画,然后运行新的

body.stop().animate({scrollTop: start}, '2000', 'swing', function() { 
    return;
});

谢谢你,安德烈。停车位没用。不过,我会研究去抖动器/节流器的概念。好吧,我找到了停止不起作用的原因,因为设置滚动位置的动画会触发更多的滚动事件。所以,一件事给了另一件事,意味着你几乎可以无限滚动。毕竟,去抖动可能是最好的解决方案。