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

时间:2012-07-25 12:14:36

标签: javascript jquery scroll jquery-animate

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

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

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

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

2 个答案:

答案 0 :(得分:13)

当您使用滚动,良好检测的动画时,会出现jQuery错误。

我做了一项研究,如何将其关闭滚动并找到这个问题:How to disable scrolling temporarily?

Here is jsFiddle. You will see after click; user cant scroll untill animate complete.

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

    disable_scroll();

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

编辑:感谢galambalazs btw。

答案 1 :(得分:0)

一个想法 - 尝试连接到滚动事件并使用http://api.jquery.com/stop/来停止动画 ..坏主意..

解决方案的同样问题 - let user scrolling stop jquery animation of scrolltop?