jquery – setTimeout $.each()

前端之家收集整理的这篇文章主要介绍了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);

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

猜你在找的jQuery相关文章