12

我有一些锚点链接到页面中的特定部分(使用主题标签),以及滚动到文档窗口顶部或底部的锚点。

$("html, body").animate({ scrollTop: $(document).height() }, 2000);

但是,一旦动画和滚动到达目的地并完成,文档滚动和滚动条似乎会禁用几秒钟。例如,如果单击“转到页面底部”链接,我的文档窗口将正确滚动到页面底部。当我尝试向上滚动时,它会以一种紧张的动作上下晃动,并允许我稍后滚动几次。

关于可能导致此问题的任何提示?

4

3 回答 3

21

这个线程很旧,但我遇到了这个问题并且在任何地方都没有答案,但这里有一个解决方案:

$(window).bind("mousewheel", function() {
    $("html, body").stop();
});

如果用户在动画执行时使用滚动条,它会停止动画。

于 2013-06-03T14:46:28.923 回答
7

只是为了帮助 Scotty 的回答,您实际上还可以向 .stop() 方法添加两个选项:clearQueuejumpToEnd

我遇到了滚动问题,并使用 Scotty 建议的 .stop() 开始,但注意到动画仍在“挣扎”完成。我在这里查看了文档:.stop() 方法文档

通过添加.stop(true, false);,我能够:

1.)删除排队的动画(以防几个被触发/级联)

2.) 防止动画尝试跳转到其结束值。

希望这可以帮助其他人用头撞键盘;)

于 2016-01-30T21:19:49.353 回答
2

我也建议$("html, body").stop();在“动画”之前添加。

$("html, body").stop();
$("html, body").animate({ scrollTop: $(document).height() }, 2000);
$(window).bind("mousewheel", function() {
    $("html, body").stop();
});
于 2019-11-25T09:40:32.580 回答