我有一个数组:result [i]。我想遍历数组中的每个字段并将其附加到我页面中的元素。
$("tr:first").after(result[i]);
但我希望这会延迟发生。
一直试图解决队列如何处理每个循环和延迟,但我似乎无法解决它。我可以得到一个延迟,但只有在它们全部附加之前。
提前致谢。
答案 0 :(得分:7)
尝试queue
:
$.each(result, function(idx, val) {
$("tr:first").delay(1000).queue(function(next) {
$(this).after(val);
next();
});
});
要完成,这是针对jQuery 1.4的。在早期版本中,回调应如下所示:
function() {
// do whatever here
$(this).dequeue();
}
答案 1 :(得分:2)
看,递归的力量:
(function append(i) {
if (i >= result.length) return;
$('tr:first').after(result[i]);
setTimeout(function(){append(i+1)},1000);
})(0);
您可以添加额外的setTimeout,具体取决于您是需要立即显示第一项还是延迟后显示。
答案 2 :(得分:1)
$(result).each(function(i) {
$("tr:first").delay(1000).after(result[i]);
});
答案 3 :(得分:1)
另一种处理方法是循环结果数组并设置一堆setInterval或.delay()函数调用,延迟根据数组索引而变化。例如:
for( var i = 0; i < result.length; i++ ){
$('tr:first').delay(i*1000).after(result[i]);
}
可以肯定的是,这个解决方案不如上面@Victor提供的递归解决方案,但如果您不喜欢任何原因的递归,这是另一种方法。