2011-09-30 9 views
7

私はこのセレクタを使用しています $("textarea #myTextArea").val(text);これは機能しません。 IDを削除してクラスを使用すると、そのクラスが機能しています。 jqueryがここで要素を見つけることができないのはなぜですか?要素タイプとIDを持つjqueryセレクタの使い方

+4

ちなみに、ちょうどidがjqueryのに最適化されている - あなたはかなりのセレクタを減速されます –

+0

ダニエルは右である、あなたの代わりにあなたのセレクタの唯一の$(「myTextArea」)を使用する必要があります。それはjavascriptのgetElementById()を直接使用するので、高速かつ効率的です。セレクタを使用する場合、スクリプトはすべての要素(この場合はテキスト領域)を選択し、適切な要素が見つかるまで繰り返します。 – Przemek

+0

はい、同じIDで他のものが使用されているので、私はそれをすることができません。同じページでは、それはひどいことが分かりますが、私はそれで生きなければなりません。 – Manoj

答えて

26

スペースのためです。スペースではtextareaの中に#myTextAreaと書かれています。

$("textarea#myTextArea").val(text); 
+1

"textarea"は冗長ではないことを反映するために答えを編集しました。それは約80%遅くなります。ここでは、私はテストを作成しました:http://jsperf.com/jquery-selector-performance-test123 – Alex

4

だけのスペース削除:あなたはジャレッドFarrishが削除コメントで言及したようtextarea

の子孫要素であるID myTextAreaを持つ要素を選択しようとしている現時点では

$("textarea#myTextArea").val(text); 

を要素タイプがより効率的になります。

$("#myTextArea").val(text); 

文書が有効な場合、すべてのIDは1回だけ使用されますこれはまだ正しいです。

+0

または 'textarea'を完全に削除してください。 –

+3

@Manojを明確にするために、スペースを使用すると、テキストエリアの*子孫*であるID myTextAreaを持つ要素を選択しようとします。 – Kasaku

+0

@PirateKitten +1 – Clive

関連する問題