jquery – setTimeout $.each()

好的,所以我有这个代码
$(this).find('article.loading').each( function(i) {

    var el = this;
        setTimeout(function () {
        $(el).replaceWith($('#dumpster article:first'));
    },speed);

});

我想用另一个替换每个元素,但是我想要在每个替换之间有一个延迟.

我不知道为什么这不工作,它只是在一次超时后替换所有这些.

有任何想法吗?

谢谢.

解决方法

您正在遍历元素,并为每个配置添加一个定时器.本质上,为每个元素立即设置一个新的定时器.在所有定时器的第一个tick上,元素被更新.间隔是相同的,所以他们都看起来同时更新.

您的逻辑需要围绕计时器.定时器的每个刻度需要更新集合中的下一个元素.您不需要每个循环,使用定时器结合增量索引作为循环机制,一旦更新了最后一个元素,就停止定时器.

var elements = $(this).find('article.loading');
var index = 0;

setTimeout(function () {
    $(elements).get(index).replaceWith($('#dumpster article:first'));
    index++;
},speed);

像上面的东西,但还记得也停止计时器!

相关文章

页面搜索关键词突出 // 页面搜索关键词突出 $(function () {...
jQuery实时显示日期、时间 html: <span id=&quot...
jQuery 添加水印 <script src="../../../.....
中文:Sys.WebForms.PageRequestManagerParserErrorExceptio...
1. 用Response.Write方法 代码如下: Response.Write(&q...
Jquery实现按钮点击遮罩加载,处理完后恢复 思路: 1.点击按...