微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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);

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐