Javascript 单击触发的scrollTop需要随机的时间来触发

Javascript 单击触发的scrollTop需要随机的时间来触发,javascript,jquery,onclick,scrolltop,Javascript,Jquery,Onclick,Scrolltop,我有一个评论部分,当您滚动它时,它会自动滚动到视图中(使用jQueryscrollTop),然后有一个按钮,当您单击它时,它会滚动到视图中。第一个滚动动作总是完美运行,但第二个滚动动作在按下按钮后似乎需要随机的时间 可以在此处找到现场演示:。转到comment部分,滚动它以启动第一个jquery滚动条。然后单击“后退”按钮启动第二个滚动条。它可能会在你尝试它的最初几次时立即起作用,但如果你做得足够多,它最终会被延迟 html <div id="comment-section">

我有一个评论部分,当您滚动它时,它会自动滚动到视图中(使用jQuery
scrollTop
),然后有一个按钮,当您单击它时,它会滚动到视图中。第一个滚动动作总是完美运行,但第二个滚动动作在按下按钮后似乎需要随机的时间

可以在此处找到现场演示:。转到comment部分,滚动它以启动第一个jquery滚动条。然后单击“后退”按钮启动第二个滚动条。它可能会在你尝试它的最初几次时立即起作用,但如果你做得足够多,它最终会被延迟

html

<div id="comment-section">
  <div id="comment-background-up">BACK</div>
  <div id="good_comments"><!--CONTENT--></div>  
  <div id="bad_comments"><!--CONTENT--></div>
</div>

有人知道是什么原因导致了这种延迟吗?

我想这是因为jQuery daisy链接了动画。然后,您可以在每滚动一次时启动动画。因此,你滚动的次数越多,700毫秒的动画“堆积”的次数就越多,因此你的返回动画会等待它们全部完成

最好是更新代码,以避免正文上的链接式滚动动画

不过,现在您可以通过使用jQuery的函数来解决这个问题。即:

$("#comment-background-up").click(function() {
  $('html, body').stop(true, true).animate({
      scrollTop: $("#randomajax").offset().top
  }, 700);
  $(this).fadeOut(200);
});

哇,谢谢,我永远也想不到!你知道如何避免链接滚动条吗?也许可以检查文档的滚动条参数,如果它已经在正确的位置,不要启动动画。
$("#comment-background-up").click(function() {
  $('html, body').stop(true, true).animate({
      scrollTop: $("#randomajax").offset().top
  }, 700);
  $(this).fadeOut(200);
});