Javascript 如何禁用滚动直到动画完成?
我正在使用此代码滚动到页面上的某个元素:Javascript 如何禁用滚动直到动画完成?,javascript,jquery,scroll,jquery-animate,Javascript,Jquery,Scroll,Jquery Animate,我正在使用此代码滚动到页面上的某个元素: $("html, body").animate({scrollTop: $(".myDiv").offset().top}, 300); 它可以工作,但有一个问题:当用户向下滚动而脚本向上滚动时,会出现一些抖动,因为在不同的方向上同时有两个滚动命令——对我来说听起来很合乎逻辑 我检查了一些其他网站与这样的滚动功能,没有犹豫不决。那么防止这种情况发生的诀窍是什么呢?一个想法-尝试挂钩到滚动事件并使用它来停止动画 .. 坏主意 解决方案也有同样的问题-当您
$("html, body").animate({scrollTop: $(".myDiv").offset().top}, 300);
它可以工作,但有一个问题:当用户向下滚动而脚本向上滚动时,会出现一些抖动,因为在不同的方向上同时有两个滚动命令——对我来说听起来很合乎逻辑
我检查了一些其他网站与这样的滚动功能,没有犹豫不决。那么防止这种情况发生的诀窍是什么呢?一个想法-尝试挂钩到滚动事件并使用它来停止动画 .. 坏主意
解决方案也有同样的问题-当您使用带滚动的动画时,这是一个jQuery错误,检测良好 我做了一项研究如何关闭滚动并找到这个问题:
编辑:感谢galambalazs顺便说一句。您在哪个事件上使用这个:$(“html,body”).animate({scrollTop:$(“.myDiv”).offset().top},300);你能解释一下吗?你是用鼠标悬停还是用鼠标点击或者其他什么吗?我用鼠标点击,比如
$(“something”).click(function(){…})代码>来吧,谢谢你给我指出加拉姆巴拉兹的答案。如果还有其他人来到这里,我已经将他的解决方案重构为一个很好的自包含对象:
$('.myDiv').click(function(){
disable_scroll();
$('html, body').stop().animate({ scrollTop: 0 }, 700,function() {
enable_scroll();
});
});