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

时间:2015-01-01 17:03:49

标签: javascript jquery

此滚动动画会触发整个处理程序两次..

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

如果您在选择器中移除htmlbody,滚动动画将失去其跨浏览器支持...

1 个答案:

答案 0 :(得分:2)

在两个元素上触发动画,触发两个元素的完整处理程序。

您可以使用承诺来避免它

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