1

ループがあります

$(".box").find('.video, .print, .web').closest('.box').each(function (index)
 {
     $(this).delay(100 * index).fadeIn(300);
 });

このコードは問題なく動作します。しかし、私はこれらの 3 つのクラスをたくさん呼び出しており、それを変数に入れたかったのです。元:

var resetBoxClass = ".print .web .video";

$(".box").find('resetBoxClass').closest('.box').each(function (index)
 {
     $(this).delay(100 * index).fadeIn(300);
 });

残念なことに、これを機能させることができません...それはただの意味論ですか?誰かが私に理由を説明できますか?

4

5 に答える 5

7

カンマがありませんresetBoxClass = ".print, .web, .video"; & $(".box").find('resetBoxClass')する必要があります$(".box").find(resetBoxClass)

これは役に立ちます、

以下のように休みます。

var resetBoxClass = ".print, .web, .video";

$(".box").find(resetBoxClass).closest('.box').each(function (index)
 {
     $(this).delay(100 * index).fadeIn(300);
 });
于 2012-06-22T09:40:49.800 に答える
0

引用符なしで試してください:

$(".box").find(resetBoxClass).etc(...

変数に渡していない引用符を使用して、文字列リテラルを渡しています。

于 2012-06-22T09:41:31.960 に答える
0

クラス間の最初の行にコンマを追加し、クラスから引用符を緩めます。find()

ここにコードがあります

var resetBoxClass = ".print, .web, .video";

$(".box").find(resetBoxClass).closest('.box').each(function (index)
{
     $(this).delay(100 * index).fadeIn(300);
});
于 2012-06-22T09:43:34.180 に答える
0

コードをすばやく実行するには、クラスではなく要素をキャッシュする必要があります。

var yourTarget = $(".box").find('.video, .print, .web').closest('.box');

yourTarget.each(function (index)
 {
     $(this).delay(100 * index).fadeIn(300);
 });

要素が既にキャッシュされているため、上記のコードはより高速に実行されます。

于 2012-06-22T10:08:32.207 に答える
0

@Tats_innit が実際の質問に答えたので、再ハッシュしません。

これは少しぎこちない構造です:

$( ".box" ).find( ".video, .print, .web" ).closest( ".box" )

// or

$( ".box" ).find( resetBoxClass ).closest( ".box" )

代わりにこれを行うことができるはずです:

$( ".box" ).has( ".video, .print, .web" )

// or

$( ".box" ).has( resetBoxClass )

しかし、私はこれらの 3 つのクラスをたくさん呼び出しており、それを変数に入れたかったのです。

コードの他の部分 (質問には表示されていません) でもそのセレクターを使用しているということですか? find()質問のコードのスニペットについては、リテラルまたは変数を使用してセレクターを渡すかどうかは関係ありません。コードの他の部分で同じセレクターを使用している場合は、変数を使用すると便利です。これについて言及するのは、each()ループの使用が「これらの 3 つのクラスをたくさん呼び出している」ことを意味すると誤って考えている場合だけです。

于 2012-06-22T11:46:10.820 に答える