Javascript 滚动动画触发完成处理程序两次

Javascript 滚动动画触发完成处理程序两次,javascript,jquery,Javascript,Jquery,此滚动动画将触发完整的处理程序两次 $('html,body').stop().animate({ scrollTop : 100 }, { duration : 600, complete : function(){ console.log('scroll complete'); } }); 如果在选择器中删除html或body,滚动动画将失去其跨浏览器支持…动画将在两个元素上触发,并为两个元素启动完整的处理程序 你可以用承诺来避免它 $('h

此滚动动画将触发完整的处理程序两次

$('html,body').stop().animate({
    scrollTop : 100
}, {
    duration : 600,
    complete : function(){
        console.log('scroll complete');
    }
});

如果在选择器中删除
html
body
,滚动动画将失去其跨浏览器支持…

动画将在两个元素上触发,并为两个元素启动完整的处理程序

你可以用承诺来避免它

$('html,body').stop()
              .animate({scrollTop : 100}, 600)
              .promise()
              .done(function() {
                  console.log('scroll complete');
              });

不如果删除其中一个元素,则只会触发一次完整的处理程序:)否。。代码按POST方式执行。。如果删除选择器中的一个元素,则整个处理程序只会触发一次。。如果两个元素都在选择器中,则会触发完整的处理程序两次。我的想法是关闭,我想到的是滚动事件,这只是一个动画,您实际上应该使用
window
尝试使用
window
,但它不起作用。。但是你的解决方案是有效的:)@clarkk-我自己也试过了,并且确信它会起作用,因为它是
window.scrollTop
属性,但由于某种原因它不会起作用。promise方法会起作用,所以请使用它。