2013-06-06 8 views
6

私は$('.elem',elem),$('.elem',elem).tabs()のようなコードを使用しています。

$(".elem")は、そのクラスの要素を選択するために使用されます。

しかし、次のカンマの後には何がありますか?それの使用は何ですか?

+2

それは[コンテキストセレクタ](HTTPです:

<div id="included"> <input/> <input/> </div> <div id="excluded"> <input/> <input/> </div> 

これらのセレクタは、次の出力を生成する// ($ elem).find( '。elem'); ' – billyonecan

+0

私はjQueryをほぼ2年間使っています。b utはそれにあまり注意を払わなかった。 :) +1 –

答えて

11

$('.elem',elem)$(elem).find('.elem')でください

それは

​​

と同じです。実際、それがjQueryがカバーしていることです。 elem要素の子孫であるクラス"elem"のすべての要素を検索します。

これはthe API documentationでカバーされています。それを最初から最後まで読んで1時間を費やす価値があります。そこにはよく知られていない、あらゆる種類の有益なものがあります。 :-)(私はこれが彼らの1人であると言っているわけではありません。私はそれ自身のファンではなく、一般的にそこには多くの有益なものがあります)。

+0

は、find()に対してコンテキストを使用する利点がないようですが、それは本当ですか? –

+4

@roasted:右。 *まあ*、それはより少ない文字だと指摘する人もいると思います。 :-)しかし、 "jQueryがそれを使って何をしているのか"と言うとき、私はまさにそれを意味しています:あなたが '$( 'elem'、elem)'を実行したことを文字通り検出し、 '$(elem ).find( '。elem') '。したがって、 '$( 'elem'、elem)'フォームは単に別の関数呼び出しを追加します(本当に重要ではありません)。 –

0

第2パラメータjQuery関数に渡されると、最初のセレクタのスコープまたはコンテキストが定義されます。

jQueryは、2番目のパラメータで指定された要素内で、クラスがelemのすべての要素を見つけるようにjQueryに指示します。クラス.elemの外の要素はelemの外には選択されません。

を考えると、次のHTML:

console.log($("input", "#included").length); //2 only those inside included 
console.log($("input").length); //4 all inputs 

実施例:http://jsfiddle.net/LE6eE/

+0

私はセレクタを.find()メソッドで使用しました。 $( "。elem"、elem)は.find()よりうまく動作しています。だからfind()メソッドは有用かどうか? – Natesan

+0

私は、コンテキスト指定子がfindが行うことができないことが何もないかどうかはわかりません。私は 'find'は少し直感的で読みやすいと思います。 –

関連する問題