2011-02-07 17 views
1

これは有効なセレクタですか?そうでない場合、正しい方法は何ですか?

$($(this)+' childElement').... 
+1

'$(this)'が返すものを考えてみましょう。 – delnan

+0

私はあなたの質問を理解していません。あなたは 'this'の子を直接選択したいのですか、または 'this'のidにchildrenのidを追加して子を動的に選択しますか? –

答えて

4

使用

$(this).find("childrenSelector") 
+0

私は彼の方法がより良いパフォーマンスを持っていることを読んでいると思い込んでいたので、これよりも@ジャスティンの答えが好きです。私は間違っている可能性があります。 –

+0

このテストでは、コンテキストを使用するとfindよりもやや速くなりますが、両方とも同様のパフォーマンスを示します。http://jsperf.com/jquery-selector-performance-with-find –

+0

Thanks Justin。 +1をあなたのものに与えます。 – Aliostad

4
$(this).find('childrenSelector'); 
+0

@Ben - なぜこれは受け入れられた答えではありませんでしたか?あなたが受け入れたものと同じですが、最初に答えました。 –

+0

とにかく1行に3つの投票を取る^ – Matt

7

これは、あなたが探しているものかもしれ:

$('childElement', $(this)) 

基本的には現在の要素、thisのコンテキスト内でchildElementを検索します。


詳細については、jQuery()機能のマニュアルを参照してください。具体的には、次の抜粋は、第二引数を説明し、それがfindを使用することと等価である方法:

デフォルトでは、セレクタは、ドキュメントルートから始まるDOM以内に検索を実行します。ただし、$()関数にオプションの2番目のパラメータを使用することで、検索の代替コンテキストを指定できます。私たちはこの文脈にスパンセレクタを制限してきただけなので、クリックされた範囲内にわたる、

$('div.foo').click(function() { 
    $('span', this).addClass('bar'); 
}); 

:コールバック関数内で、我々は要素の検索を行いたい場合たとえば、私たちはその検索を制限することができます要素は追加のクラスを取得します。

内部的にセレクタコンテキストは.find()メソッドで実装されているため、$('span', this)$(this).find('span')に相当します。

+0

これはjQueryドキュメントのどこに表示できますか?私はこれまで何も見たことがない?私はそれがどのように動作するのかを知りたい。 – Ben

+0

問題ありません、この回答を編集してください... –

+0

+1。速くなるために。 – Aliostad

0

それとも...

$(この).children( '要素。');

+0

私は1つのレベルの深さだけ行くので、私はこの1つを使用してトリップされてきました。 – Matt