【问题标题】:Jquery animation loop problemjquery动画循环问题
【发布时间】:2011-01-14 22:19:26
【问题描述】:

我正在尝试循环执行动画功能。我已经设法弄清楚它的一个迭代,但我无法弄清楚如何重复循环一定次数。下面是我的动画功能。请帮我弄清楚我如何运行这个任意次数,甚至让它成为一个永无止境的循环。

<script type="text/javascript">
$(document).ready(function(){
    var delay = 150;
    var times = 4;
    var i = 1;

    doMove = function() {
        if( i < times ){
            $('#lip').removeClass('lip'+i);
            $('#lip').addClass('lip'+(i+1));
        } else if ( i == times ) {
            $('#lip').removeClass('lip4');
            $('#lip').addClass('lip1');
        }

        ++i;
        if( i >= times ) {
            clearInterval( interval ) ;
        }
    }

    var interval = setInterval ( "doMove()", delay );


});
</script>

非常感谢。我是 jquery 的新手。

【问题讨论】:

  • var interval = setInterval ( doMove, delay );
  • working 你到底有什么问题?
  • 在“用户”方面,将类从 lip1 更改为 lip2 到 lip3 等等实际上是做什么的 - 是更改背景图像或大小或颜色还是其他什么?

标签: jquery css animation jquery-animate


【解决方案1】:

您的脚本中的延迟非常短 - 所以您可能没有看到更改发生。尝试改变

var delay = 150;

var delay = 1000; // 1 second

更新

啊 - 你希望它在完成后再次运行......这是一个例子:

repeats = 0 将是无限循环,1 将运行一次,2 将运行两次,依此类推...

var delay = 150;
var times = 4;
var repeats = 3;
var i = 1;
var j = 0;

doMove = function() {
    if( i < times ){
        $('#lip').removeClass('lip'+i);
        $('#lip').addClass('lip'+(i+1));
    } else if ( i == times ) {
        $('#lip').removeClass('lip4');
        $('#lip').addClass('lip1');
    }

    ++i;
    if( i >= times ) {
        if (j < repeats || repeats == 0) {
            i = 1;
        } else {
            clearInterval( interval ) ;
        }
    }
    ++j;
}

var interval = setInterval ( "doMove()", delay );

【讨论】:

  • 工作就像一个魅力。虽然会有j++; i=1;非常感谢
  • 您可以将您的函数直接传递给 setInterval(),而不是使用字符串和全局函数。
  • @Vincent Robert - 是的@Reigel 在上面的 cmets 中也提到了这一点 - 它避免了字符串的 eval,这样更好。
  • 更重要的是,“doMore”可以是局部变量,不会污染全局范围
  • @Vincent Robert - 我认为这远远超出了原始问题的范围。
猜你喜欢
  • 1970-01-01
  • 2016-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多