-1

当我跑步时

$("[id^=menuItem]").fadeOut(1000);

淡出是同时对所有组件进行的。但是,无聊的是我执行了一个 for 循环对元素做其他事情,完成后我希望同时淡出所有元素

var i;
for(i = 1; i <= 6; i++)
    $("div#item" + i).delay(i * 1000).fadeIn(1500);
$("[id^=item]").fadeOut(400);

出于某种原因,淡出从第二个元素之前的第一个元素开始,在第三个元素之前开始,等等。它确实创造了一个非常酷的效果,但这不是我需要在我的项目中实现的。

为什么会发生??

我怀疑答案将是,一旦每个组件完成初始淡入,最终淡出就会开始。在这种情况下,我的问题将被重新表述为如何将多选淡出的执行延迟到某个特定的东西已完成(即最后一项已淡入)。

4

1 回答 1

0

这可能与不同组件在不同时间为下一步做好准备这一事实有关。也许我应该在淡入后使用回调函数。当然,这将执行一大堆回调,因此需要使用 $.when/.then 语法。

于 2012-07-24T23:38:04.733 回答