Javascript jQuery animate()页面单独上下滚动

Javascript jQuery animate()页面单独上下滚动,javascript,jquery,jquery-animate,Javascript,Jquery,Jquery Animate,嗨,我对jQuery还是个新手。我正在尝试使页面滚动窗口的高度,并使用jQuery平滑地这样做。当我使用下面的代码时,页面会不断地上下滚动。一个想法为什么` var body = jQuery('body, html'); var newDistance = 0; var movement; var newPosition = 0; jQuery(window).on('scroll',function(){ movement = window.pageYOffset; var

嗨,我对jQuery还是个新手。我正在尝试使页面滚动窗口的高度,并使用jQuery平滑地这样做。当我使用下面的代码时,页面会不断地上下滚动。一个想法为什么`

var body = jQuery('body, html');
var newDistance = 0;
var movement;
var newPosition = 0;

jQuery(window).on('scroll',function(){
    movement = window.pageYOffset;
    var winh = window.innerHeight;
    if(movement >= (newPosition + 100)){
            newDistance += winh;
            jQuery(body).animate({scrollTop:newDistance},{
            duration: 'slow'
            });

            console.log('newd', newDistance);
            newPosition = newDistance;
     }else if (movement <= (newPosition - 100)){
            newDistance -= winh;
            jQuery(body).animate({scrollTop:newDistance},{
            duration: 'slow'
            });
            newPosition = newDistance;
    }else{
            jQuery(body).animate({scrollTop:newPosition},{
            duration: 'slow'
            });
    };
 } );
var body=jQuery('body,html');
var newDistance=0;
var运动;
var-newPosition=0;
jQuery(窗口).on('scroll',function(){
移动=window.pageYOffset;
var winh=window.innerHeight;
如果(移动>=(新位置+100)){
newDistance+=winh;
jQuery(body).animate({scrollTop:newDistance}{
持续时间:“慢”
});
console.log('newd',newDistance);
新位置=新距离;

}否则如果(移动我认为这是因为
scrollTop
也会触发
scroll
事件。所以真正发生的是,当您第一次触发
scroll
事件时,它进入回调,动画
scrollTop
,然后触发另一个
scroll
事件,该事件返回回调,并因此产生一个永无止境的lo。)op.你会怎么做呢?感到筋疲力尽我认为你可以设置一个布尔标志(例如,
isAnimating
)在
窗口上
范围内,首先将其设置为
false
。然后在
滚动
回调中,首先要检查此布尔标志的值是否为
false
。将所有内容都放在
if
子句中。然后在
if
子句中,可以设置
isAnimating
(或你给它起的任何名字)设置为
true
。另外,你在
内部将它设置为
false
完成
调用你的
动画
方法。有意义吗?你能分享一把小提琴吗?这样我就可以四处玩转,看看我的建议一开始是否可行?!:)感谢您对此链接的兴趣