2012-03-20 9 views
1

私は簡単なビンを持っており、本当に答えを見つけることができません。私は$('something here') 150回を使用するコードの強打を持っている場合はjQueryセレクタの効率

は、それがより効率的である:私は知っている

var item = $('something here') 

かなり愚かな質問が、jQueryのだけ見つけるために持っているとして、それはよりefficentだろう項目は1回ですか?

+4

なぜhttp://jsperf.com/でテストを実行していませんか? – j08691

答えて

3

はい、結果として得られるjQueryオブジェクトを保存することは非常に効率的であり、より高速になる可能性があります。セレクタを使用するたびに、新しい検索が開始されます。 jQueryは結果をキャッシュしません。結果のjQueryオブジェクトを変数に格納すると、毎回検索を何度も何度も実行する必要がなくなります。

+1

真(+1)ですが、これには必ずしも「必ずしも問題ではない」と「パフォーマンステストを実行する」という注釈を付ける必要があります。クリーンなコードを最初に書いてください(私は通常は*リピートセレクタを持っていません)。 –

+0

検索は通常無視されます。それは本当のスローダウンのたびに大きなjQueryオブジェクトの作成です。 – Paulpro

+0

検索の目的に応じて、一部のセレクタは非常に安く、高価なもの(ブラウザがネイティブにできない場合など) –

4

この記事によれば、変数にセレクタを割り当てる方が効率的です。これは、jQueryがセレクタに一致する要素のDOMを再度スキャンする必要がないためです。

http://geekswithblogs.net/renso/archive/2009/07/14/jquery-selector-efficiencycost-impact.aspx

また、他のヒントを提供します。たとえば、クラスセレクタだけを使用しないようにしてください。興味深いことに、$('#someID')などのセレクタは$('div#someID')よりも高速です。

+2

'$("#someID ")'はネイティブ関数 'getElementById()'にマップされます。 –

+0

ああ、意味があります。 – dangerChihuahua007