jquery动画滚动到滚动上的位置
很多相关的问题,但不幸的是不是我要找的 我正试着做这个函数。当用户使用scroll函数时,它向下滚动550px,下一次再次滚动550px,等等。我写了下面的代码,但函数似乎运行在一个循环中。你知道怎么解决这个问题吗?谢谢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'
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;
});
谢谢你,安德烈。停车位没用。不过,我会研究去抖动器/节流器的概念。好吧,我找到了停止不起作用的原因,因为设置滚动位置的动画会触发更多的滚动事件。所以,一件事给了另一件事,意味着你几乎可以无限滚动。毕竟,去抖动可能是最好的解决方案。