2011-01-27 15 views
1

明らかに、jQueryセレクタを複数回使用すると変数に格納することをお勧めします(ではなく、)。javascript変数に複数のjQueryセレクタを保存するにはどうすればよいですか?

私の質問は、変数内に互換性のある複数のセレクタを保存する方法です。

たとえば、$('#object1, #object2)を選択し、後で `$( '#object1')を選択します。複数のセレクタを作成するために他の変数と組み合わせることができる変数を作成するにはどうすればよいでしょうか。

私はこのようにそれを記述した場合:

var object1 = "#object1"; 
var object2 = "#object2"; 

$(object1 + "," + object2); 

私は文字列のみ#object1はなく、実際のセレクタを参照することになります。

どのように複数のセレクタを変数に格納するのですか?交換可能に使用できますか?

+0

このコードで何が問題になっていますか?私はそれがうまくいくと思う。 – kprevas

+0

実際のセレクタではなく、varとして文字列を格納しています。 – Jared

+2

正確にはセレクタ*は文字列ですが、あなたが参照しているのはjQueryオブジェクトです。 –

答えて

8

問題はselector stringではありませんが、問題はDOM要素のクエリです。 「問題」とは、費用がかかるということです。そのため、要素を一度クエリして参照を格納するだけです。あなたのコメントを参照する

var object1 = $('#object1'), 
    object2 = $('#object2'); 

object1.some_method(); 

更新

object1.add(object2).method(); 
+0

これは簡単ですが、 'some_method();'を '#object1'と'#object2'にどのように適用しますか? – Jared

+0

更新をありがとう、それは私が行方不明だったものです! – Jared

3

ないI完全に確認してください:

jQueryのは、jQueryのオブジェクトをCONCATすることができます.add()help方法を提供していますあなたが意味することを理解する。 jQueryオブジェクトを保存して、何らかのキャッシュのようにそれらを絶えず検索する必要はありませんか?

var cache = new Object(); 
cache['#object1'] = $('#object1'); 
cache['#object2'] = $('#object2'); 

jQueryの値を取得するには、cache['#object1']に電話するだけです。

+1

オブジェクトの新しいインスタンスを作成するのではなく、オブジェクトリテラル、 '{}'を使用してオブジェクトを初期化することをお勧めします。例えば。 'var cache = {};'。これはより速く実行し、数バイトを節約します。 –

+0

それは同じだったと思った。先端に感謝します。 – Neil

1

あなたは.add()を使用することができます:$()FNに渡されたとき

var object1 = $('#object1'), object2 = $('#object2'); 

object1.add(object2).addClass('couple'); 

あるいは、

var multiple = [object1[0], object2[0], ...]; 

$(multiple).addClass('party'); 
0

セレクタは文字列です。セレクタに一致する要素のコレクションを返します。したがって、このコードには何も問題はありません。

コードはまた

var object1 = "#object1", 
    object2 = "#object2"; 

$(object1).add(object2).doSomething(); 

、のように記述することができ、またはそれはさらにdoSomethingがjQueryのまたはjQueryのプラグインで定義された方法であることができる

var object1 = $('#object1'), 
    object2 = $('#object2'); 

object1.add(object2).doSomething(); 

として最適化することができます。

0

なぜ簡単な方法を使用しないでください。

var severalVar = 'h1,h2,h3,h4,h5,h6'; 
$(severalVar).hide() 
関連する問題