代码之家  ›  专栏  ›  技术社区  ›  Nathan Osman

为什么jquery动画不无限循环?

  •  0
  • Nathan Osman  · 技术社区  · 14 年前

    我有一个jquery动画,它确实拒绝循环。它将通过动画播放一次,然后退出。

    这里是: http://stackoverflow.quickmediasolutions.com/stackad/fancy.html

    以下是代码的相关部分:

    function DoAgain()
    {
        $('#block').stop().css('marginLeft','0px');
        var width = ($('#block').width()) / 2;
        var length = (1000 * num_ads) / document.getElementById('speed').value;
        $('#block').animate({marginLeft: '-=' + width},length,'linear',
          function() {
            DoAgain();
        });
    }
    

    我尝试用chrome javascript控制台调试应用程序,但是根据它,一切都正常。(没有错误, DoAgain() 被称为罚款等)

    我真的被困在这里了-一个正确的方向的轻推是值得赞赏的。

    2 回复  |  直到 14 年前
        1
  •  1
  •   mpen    14 年前

    我真的不知道为什么,但是你 stop() 似乎一直在打破它。在这里,我为您修复了它:

    http://jsfiddle.net/34dvF/3/

    function DoAgain()
    {
        $('#block').css('marginLeft','0px');
        var width = $('#block').width() / 2;
        var length = (1000 * num_ads) / $('#speed').val();
        $('#block').animate({marginLeft: '-=' + width}, length, 'linear', DoAgain);
    }
    

    你真的不需要 停止() 不管怎样,是吗?在再次调用函数之前,动画已经完成。

        2
  •  0
  •   Nathan Osman    14 年前

    只是想和大家分享一下解决方案:

    显然是打电话来的 stop() 只能在动画项目上执行,因此我插入以下内容:

    $('table:animated').stop(true,false);
    

    …只有当动画运行时,它才会停止。