2011-06-24 3 views
0

を取得します。jqueryの、セレクタsyntaxtヘルプは、私がこのように動作しますセレクタを持っているすべてのテキストfileds

var context = $('#container'); 
$('textarea, :text', context); 

どの私は2番目の式で動作するようにセレクタを取得できますか

動作しません:

$('#container').filter('textarea, :text'); 

はしかし、私はフィルタコマンドが同じであることを読んだことがある

+0

ちょうど好奇心の理由から、とにかく2番目の式をなぜ必要としますか?それは、最初のものよりもパフォーマンスが劣ります。 –

+0

@ Jason McCreary Explain ... – QueueHammer

+0

2番目の式*が有効かどうかに関係なく、フィルタリングを選択する(つまり '$()。filter()'を直接選択する(つまり '$()')ストレート選択はより良いパフォーマンスを提供します。前者はセレクタに対するDOMテストを分析します。後者は同じことをしてから、一致するセットに対してもう一度やります。追加ステップ=追加費用。確かにこれは無視できるものです。私はそこにいくつかのベンチマークを見たいと思います。いずれにしても、前者の表現はよりよく読める。 –

答えて

1

これを読んだところは間違っています。

var context = $('#container'); 
$('textarea, :text', context); 

は、それはその子孫を検索しません.find()

$('#container').find('textarea, :text'); 

filter現在選択された要素をフィルタを使用するのと同じです。したがって、textareaまたは何らかのテキスト入力フィールドの場合、2番目の式は$('#container')によって選択された要素を返します。

最近のブラウザでネイティブ関数を使用するには、jQueryの:textの代わりにinput[type="text"]を使用する必要があります。

+0

それは解決策になります。 – QueueHammer

関連する問題