【问题标题】:I need this jQuery function to loop我需要这个 jQuery 函数来循环
【发布时间】:2013-06-03 08:19:17
【问题描述】:

简单问题:我需要这个函数无限循环。我试过setTimeout(我把所有步骤的执行时间都加起来了)。

<script type="text/javascript">
  $(document).ready(function slideshow(){
    $('#slide1').show(500).delay(500)
      .animate({width:'240px'}).delay(500)
      .animate({height:'50px', width:'410px'}).delay(1500)
      .hide(500)
  });
</script>

【问题讨论】:

  • 你不应该循环就绪函数你想实现什么?
  • 你也可以使用 setInterval 代替 setTimeout
  • setTimeout 应该用于更高的精度
  • @kitty setInterval 结合 jQuery 动画并不是最好的主意(我通常避免使用 setInterval)。动画(包括延迟)是可排队的,如果间隔时间选择错误(较小的值),这可能会导致动画队列不断增长,并且只有在查看不断增长的内存使用量时才会注意到这一点。
  • 我需要这个来开始运行 onload 并保持无限循环。为此,我的 setTimeout 值是多少?另外,setInterval 搞乱了动画的顺序

标签: jquery loops infinite


【解决方案1】:

试试

jQuery(function($){
    function anim(){
        $('#slide1').show(500).delay(500)
        .animate({width:'240px'}).delay(500)
        .animate({height:'50px', width:'410px'}).delay(1500)
        .hide(500, function(){
            setTimeout(anim, 500)
        })
    }
    anim();
})

【讨论】:

  • 嘿,我试过了,它会循环播放,但在第一次运行后会弄乱动画的顺序:/
【解决方案2】:
setInterval(function() {
    $('#myelem').stop().animate({ changes }, 500);
}, 1000);

每一秒你的元素都会使用你想要的任何属性进行动画处理。您可以使用setTimeout,尽管setInterval设计用于循环。两者都可以。

与我的答案的主要区别在于stop() 的使用。它会停止之前的动画,防止出现任何奇怪的双重错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    • 2019-06-07
    • 2016-02-13
    • 1970-01-01
    • 2012-09-16
    相关资源
    最近更新 更多