0

.each() を使用して、いくつかのブロックを次々とフェードインすることに成功しています。予想どおり、最初の要素から始まり、次の要素に移動します。

.each() の順序を制御する方法はありますか? 1,2,3,4 などの代わりに、たとえば 1,2,5,9,6,3,4,7,8 が必要です。

$(window).load(function() {
    $(".blocks").each(function(i) {
       $(this).delay((i + 1) * 500).fadeIn(500);
    });
});
4

3 に答える 3

4

あなたの質問への直接的な答えとして.each()、アイテムがjQuery内部配列にある順序でjQueryオブジェクトのアイテムを繰り返します。.each()反復する配列内の順序を変更する以外に、使用する順序を制御する方法はありません。

目的の順序がアルゴリズムによってどのように決定されるかを開示していないため、オプションは次のとおりです。

  1. .each()が呼び出される前に配列をソートする
  2. .each()電話をかける前に、希望する注文を手動で作成する
  3. .each()呼び出しの前に配列を適切に並べ替える他のコード

コード スニペットの非常に具体的なインスタンスでは.each()、特定の配列インデックスの目的の遅延値を検索するルックアップ テーブルを作成することで、配列を並べ替えたり並べ替えたりすることなく、別の方法で解決できます。

$(window).load(function() {
    var delayLookup = {1:1,2:2,5:3,9:4,6:5,3:6,4:7,7:8,8:9};
    $(".blocks").each(function(i) {
       var delayTime = delayLookup[i] || i;
       $(this).delay(delayTime * 500).fadeIn(500);
    });
});
于 2012-08-03T15:12:20.403 に答える
1

あなたの注文の論理が何であるかは言いません。ランダムを意味する場合は、これを行うことができます:

$('.blocks')
    .sort(function(item) { return Math.floor(Math.random() * 2) === 1; })
    .each(function(i) {
        $(this).delay((i + 1) * 500).fadeIn(500);
    });
于 2012-08-03T15:09:28.733 に答える
0

最初に配列を好きなように並べ替える必要があります。ここではかなりランダムな並べ替えのように見えるため、配列を作成して要素を手動で埋める必要があります。次に、各関数を呼び出すことができます。

于 2012-08-03T15:10:09.190 に答える