-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);

何らかの理由で、フェードアウトは 2 番目の要素の前に最初の要素で開始され、3 番目の要素の前に開始されます。実際、非常にクールな効果が得られますが、私のプロジェクトで達成する必要があるものではありません。

なぜそれが起こるのですか??

答えは、各コンポーネントが最初のフェードインで完了するとすぐに最終的なフェードアウトが始まるということになると思います。終了しました(つまり、最後のアイテムがフェードインしました)。

4

1 に答える 1

0

これはおそらく、さまざまなコンポーネントがさまざまなタイミングで次のステップの準備を整えるという事実に関係しています。たぶん、フェードイン後にコールバック関数を使用する必要があります。もちろん、それはコールバック全体を実行するため、$.when/.then 構文を使用する必要があります。

于 2012-07-24T23:38:04.733 に答える