好的,所以我有这个代码:
$(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);
像上面的东西,但还记得也停止计时器!