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

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

$("html, body").animate({scrollTop: $(".myDiv").offset().top}, 300); 

它有效,但有一个问题:当用户向下滚动时脚本向上滚动,有一些抖动,因为有两个滚动命令同时在不同的方向 – 听起来合乎逻辑。

我检查了一些具有这种滚动function的其他网站,没有任何好斗。 那么防止这种情况的诀窍是什么?

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

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

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

 $('.myDiv').click(function(){ disable_scroll(); $('html, body').stop().animate({ scrollTop: 0 }, 700,function() { enable_scroll(); }); }); 

编辑:感谢galambalazs btw。

一个想法 – 尝试挂钩滚动事件并使用http://api.jquery.com/stop/来停止你的动画..坏主意..

解决方案同样的问题 – 让用户滚动停止jtopery scrolltop的动画?