滚动的简单问题。我正在寻找一种方法来阻止滚动动画的排队。我试图在stop()中工作,但它似乎没有做到这一点..任何想法?这是代码......
('#nav_hold li a')。点击(function(){
$ currLoc = $(this).attr('href');
$newLoc = $currLoc.replace('#!','');
$ newLoc =“#”+ $ newLoc;
$(window).scrollTo($ newLoc,1000);
});
答案 0 :(得分:7)
我遇到了同样的问题,但我在这里找到了解决方案http://usejquery.com/sites/contrast-rebellion
只需使用该行
在任何新的scrollTo之前jQuery.scrollTo.window().queue([]).stop();
。
答案 1 :(得分:1)
有功能clearQueue()。我认为这应该有所帮助。
答案 2 :(得分:1)
.stop()用于删除当前正在运行的动画,还要清除队列使用.stop(true)
$('#about').click(function() {
$(this).stop(true);
$.scrollTo('#about', 1000);
});
来自jQuery Docs(上面链接):
如果在同一个元素上调用多个动画方法,则 以后的动画放置在元素的效果队列中。 这些动画直到第一个动画完成才会开始。什么时候 调用.stop(),队列中的下一个动画立即开始。 如果clearQueue参数的值为true,那么 队列中的其余动画将被删除,永远不会运行。
答案 3 :(得分:0)
{ queue : false }
作为scrollTo选项
但这是默认值。锚点击不会让你到达某个地方吗?
答案 4 :(得分:0)
当你对任何元素使用$.scrollTo
时,它实际上是滚动(带动画)文档,直到滚动到达指定的元素。所以我相信我们应该停止文档上的动画。试试这个
$('#about').click(function() {
$(window).stop();
$.scrollTo('#about', 1000);
});