【问题标题】:Jquery scrollTo prevent queuejquery滚动防止队列
【发布时间】:2011-11-06 04:47:45
【问题描述】:

对于 scrollTo 的简单问题。我正在寻找一种防止滚动动画排队的方法。我试过在 stop() 中工作,但它似乎没有奏效..有什么想法吗?这是代码...

('#nav_hold li a').click(function(){

$currLoc = $(this).attr('href');

$newLoc = $currLoc.replace('#!','');  

$newLoc = "#"+$newLoc;

$(window).scrollTo($newLoc, 1000);
});

这里是网站仅供参考http://www.dudnyk.com/files/connector/

【问题讨论】:

    标签: javascript jquery queue scrollto


    【解决方案1】:

    我也遇到了同样的问题,但我在这里找到了解决方案http://usejquery.com/sites/contrast-rebellion

    只需使用该行 jQuery.scrollTo.window().queue([]).stop(); 在任何新的 scrollTo 之前。

    【讨论】:

    • +1 以获得出色的解决方案。 Afaik $.scrollTo.window().stop(true); 应该做同样的事情。无论如何都适用于我的用例。
    【解决方案2】:

    有函数clearQueue()。我认为这应该会有所帮助。

    【讨论】:

      【解决方案3】:

      .stop()是用于移除当前正在运行的动画,也可以清除队列使用.stop(true)

      $('#about').click(function() {
          $(this).stop(true);
          $.scrollTo('#about', 1000); 
      });
      

      来自 jQuery Docs(上面链接):

      如果在同一个元素上调用了多个动画方法,则 稍后的动画被放置在元素的效果队列中。 在第一个动画完成之前,这些动画不会开始。什么时候 .stop() 被调用,队列中的下一个动画立即开始。 如果 clearQueue 参数的值为 true,则 队列中的其余动画将被删除并且永远不会运行。

      【讨论】:

        【解决方案4】:
        { queue : false }
        

        作为 scrollTo 选项

        但这是默认设置。锚点点击不会带你到某个地方吗?

        【讨论】:

        • 此队列引用单个滚动事件中的 x/y 动画。这与排队的动画滚动事件无关,因此完全无关。请删除此答案或进行编辑。
        【解决方案5】:

        当您在任何元素上使用$.scrollTo 时,它实际上是在滚动(带有动画)文档,直到滚动到达指定的元素。所以我认为我们应该停止文档上的动画。试试这个

        $('#about').click(function() {
            $(window).stop();
            $.scrollTo('#about', 1000); 
        });
        

        【讨论】:

        • @Greg - 希望这对你有所帮助。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-02
        • 1970-01-01
        相关资源
        最近更新 更多