我见过使用chaining settimeout执行此操作的示例。然而,这对无限数量的图像不起作用。 调用多个图像的.each函数会导致它们同时淡入。有没有像.each这样的函数可用于循环而在执行中阻塞?
答案 0 :(得分:6)
您可以使用jQuery delay
方法:
$('img').each(function(i) {
$(this).delay(i * 400).fadeIn();
});
答案 1 :(得分:1)
你永远不应该在JavaScript中使用(甚至考虑)阻塞方法。您可以为fadeIn
方法指定回调。它将在动画结束后调用。在回调中,您可以开始下一张图像的动画。
答案 2 :(得分:1)
“是否有像.each这样的函数可用于循环 阻止执行?“
没有
“我已经看过使用链接settimeout执行此操作的示例。但是 无法用于无限数量的图像。“
如果函数将自己用作回调,它将起作用。例如:
var images = [ '#img1', '#img2', '#img3' ], index = 0;
function fade() {
if (index < images.length) {
$(images[index++]).fadeIn(fade);
}
}
fade();
答案 3 :(得分:1)
function fadeInComplete(i,$imgs)
{
if (i >= $imgs.length) return;
$imgs[i].fadeIn(400,fadeInComplete.bind(i+1,$imgs);
}
$imgs = $('img');
fadeInComplete(0,$imgs);