javascript - jquery - .each() 的每次迭代增加超时间隔

标签 javascript jquery

我想在元素列表上触发一个动画,并让每次迭代的延迟增加一点。到目前为止,我已经完成了这里的工作:

JS Fiddle

var timer = 1000;

$('div').each(function(){
        setTimeout(function(){
            $('div').animate({
                width:200,
                height:200,
                opacity:1
            }, 1000);
        }, timer);
        timer += 1000;
});

没有任何错误,从技术上讲它是可行的,但它们同时都具有动画效果。我知道它与此非常相似(几乎相同),similar code ,但由于某种原因它不起作用。我错过了什么?

最佳答案

您可以使用索引参数来增加动画。

此外,您的目标是循环内的所有元素,请改用第二个参数,即当前迭代的元素

$('div').each(function(i, elem){
    setTimeout(function(){
        $(elem).animate({
                width:200,
                height:200,
                opacity:1
        }, 1000);
    }, 1000 * i);
});

FIDDLE

jQuery 还有一个delay() 方法可以用来做动画

$('div').each(function(i, elem){
    $(elem).delay(i * 1000).animate({
        width   : 200,
        height  : 200,
        opacity : 1
    }, 1000);
});
div {
  width:0;
  height:0;
  opacity:0;
  display:block;
  margin:0 auto;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div style="background:#f00;"></div>
<div style="background:#000;"></div>
<div style="background:#ccc;"></div>

关于javascript - jquery - .each() 的每次迭代增加超时间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36228724/

相关文章:

javascript - 如何使用jquery添加开始html标签?

javascript - "Unresolved function or method"与 Passport.JS

javascript - 在 Javascript 中检查 isEmpty?

javascript - TypeError : oTable. fnReloadAjax 不是函数 - DataTables

JQuery 滚动动画颜色

javascript - 我怎样才能异步运行两个正在运行的jquery?

javascript - 更改弹出菜单的图形图标

c# - 将二维数组发送到 Web API 服务

javascript - getDocument by id/从按钮获取输入文本不起作用

javascript - 返回 false 但在同一范围内继续