2009-03-20 4 views
4

は、私自身がこれを書き始め見つける:jQueryオブジェクトの配列にエレガントなインデックスを作成するにはどうすればよいですか?

$($("a-selector-which-returns-multiple-objects")[index]).SomejQueryFunctionForExampleShow() 

私は複数のオブジェクトを返す1つのクエリは、その後、[index]オペレータはDOMオブジェクトではなく、jQueryオブジェクトを返してきたので、私はjQueryオブジェクトに戻って、それを変換します外側は$()です。

これはうまくいきますが、うまくいかず、jQueryオブジェクトのセットにインデックスを作成する方法が不足しています。これを行うには適切な方法はありますか?

答えて

10

をあなたはあなたが記述する場合には、すべてのインデックスにあなたの要素を持っていません。 JQueryがコマンドをチェーンする方法のため、実行するコマンドはすべて前のセレクタから返されます。

次の例では、すべての<a>要素非表示になります:それは特定の要素にする必要がある場合は、あなたが選択することに一意のIDを与えるべきである

$(document).ready(function() { 
    $("a").hide(); 
}); 

を:

$(document).ready(function() { 
    $("#my-unique-id").hide(); 
}); 

したい場合特定のインデックスをJQueryオブジェクトとして返すには、eq functionを使用する必要があります。

$(document).ready(function() { 
    $("a").eq(0).hide(); 
}); 

また、あなたの場合、インデックスはまったく必要ありません。

+1

ありがとうございます - eq()は私が後にしたものです。インデックスは、ハードウェアから返されたビットマスクをテストしているループの一部として呼び出されているため、これを行う最も簡単な方法です。 –

+0

あなたは.each(function(i){...})を使うことができると思います。そのために – Soviut

0

あなたは、インデックスがちょうどなぜオブジェクトの一部にSomejQueryFunctionForExampleShow()を実行する場合:

$("a-selector-which-returns-multiple-objects").SomejQueryFunctionForExampleShow(). 
+0

私の[インデックス]についてのポイントは、複数のオブジェクトのうちの1つのメンバーにのみ影響を与えたいということです。 –

0

あなたは、元のラップセットをフィルタリングして、サブセット上でコマンドを実行するためにfilter commandを使用することができ(と、元に戻すend commandで設定ラップ)。

関連する問題