我已经看到使用链接 settimeout 来执行此操作的示例。但是,这不适用于无限数量的图像。在多个图像上调用的 .each 函数会导致它们同时淡入。有没有像 .each 这样的函数可用于在执行中阻塞的循环?
问问题
743 次
4 回答
6
您可以使用 jQuerydelay
方法:
$('img').each(function(i) {
$(this).delay(i * 400).fadeIn();
});
于 2013-05-19T19:51:24.270 回答
1
“有没有像 .each 这样的函数可用于在执行中阻塞的循环?”
不。
“我已经看到使用链接 settimeout 来执行此操作的示例。但是,这不适用于无限数量的图像。”
如果函数将自身用作回调,它将起作用。例如:
var images = [ '#img1', '#img2', '#img3' ], index = 0;
function fade() {
if (index < images.length) {
$(images[index++]).fadeIn(fade);
}
}
fade();
于 2013-05-19T19:58:21.350 回答
1
function fadeInComplete(i,$imgs)
{
if (i >= $imgs.length) return;
$imgs[i].fadeIn(400,fadeInComplete.bind(i+1,$imgs);
}
$imgs = $('img');
fadeInComplete(0,$imgs);
于 2013-05-19T19:58:25.137 回答
1
你永远不应该在 JavaScript 中使用(甚至考虑)阻塞方法。您可以为方法指定回调fadeIn
。动画结束后调用。在您的回调中,您可以启动下一张图像的动画。
于 2013-05-19T19:52:39.187 回答