如何在动画完成之前禁用滚动?

Sve*_*ven 13 javascript jquery scroll jquery-animate

我使用此代码滚动到我的页面上的某个元素:

$("html, body").animate({scrollTop: $(".myDiv").offset().top}, 300);
Run Code Online (Sandbox Code Playgroud)

它的工作原理,但有一个问题,它:当用户向下滚动而滚动剧本了,有一些颤动,因为有在不同的方向上同时有两个滚动命令 - 听起来逻辑性.

我检查了一些具有这种滚动功能的其他网站,没有动摇.那么防止这种情况的诀窍是什么?

Bar*_*din 13

当你使用滚动,良好的检测动画时,这是一个jQuery错误.

我做了一个研究如何关闭它滚动并找到这个问题:如何暂时禁用滚动?

这是jsFiddle.点击后你会看到; 用户无法滚动直到动画完成.

$('.myDiv').click(function(){

    disable_scroll();

    $('html, body').stop().animate({ scrollTop: 0 }, 700,function() {
        enable_scroll();
    });
});
Run Code Online (Sandbox Code Playgroud)

编辑:感谢galambalazs btw.