どちらが速く、なぜですか? div(プラグインの必要性)を$('div[data-something]')
または$('div.something')
で選択しますか?私はそれが「クリーナー」なので前者に向かって傾いている。jQueryのパフォーマンス - data-attrまたはクラスによって選択しますか?
this SO questionに基づいて、私は両方を使用すべきではないことを知っています。しかし、私はこれらの間に違いがあるかどうかを知りませんでした。
どちらが速く、なぜですか? div(プラグインの必要性)を$('div[data-something]')
または$('div.something')
で選択しますか?私はそれが「クリーナー」なので前者に向かって傾いている。jQueryのパフォーマンス - data-attrまたはクラスによって選択しますか?
this SO questionに基づいて、私は両方を使用すべきではないことを知っています。しかし、私はこれらの間に違いがあるかどうかを知りませんでした。
ブラウザによって異なります。ほぼすべてのブラウザがquerySelectorAll
をサポートしています。できるだけjQueryが使用します。 querySelectorAll
は属性プレゼンスセレクタと共に使用することができます。jQueryが必要な場合は、それをエンジンにオフロードできます。
querySelectorAll
のない古いブラウザでは、明らかにjQueryはもっと多くの作業を行う必要がありますが、IE8でもそうです。これらの事のほとんどと同様に
は、あなたの最善の策は次のとおりです。
は、あなたが問題を参照してください場合は、問題、および
を見ていない限り、プロファイル/までそれについては心配しないでください
jQueryは、ブラウザでサポートされている場合、最初にネイティブgetElementByCalssName
を使用しようとするため、クラスごとに選択する方が常に属性セレクタより高速です。そうでない場合は、CSSセレクタを使用してページ内の要素を検索するquerySelector
を使用します。
いいえ、jQueryは 'getElementsByClassName'ではなく、ほとんどすべてのブラウザで' querySelectorAll'を使用します。単純なクラスセレクタ( 'div.test'のようなものではありません)では' getElementsByClassName'に戻りますが、現代的なものであればブラウザの独自のCSS実装に延期しています。 –
なぜdownvote ?? – ShankarSangoli
私は少し酷いようですが、おそらくそれはあなたが 'div.something 'がいつもより速くなると言ったからです。 –
Chrome 16以上、there is no difference。あなたが少なく、特定のクラスセレクタ(例えば$(".test")
)を作る場合は、それは他の方法をアウトパフォームします:ShankarSangoliが言及しているので、私はdiv.test
クラスセレクタがあることだろうと思った、やや予想外であった
もっと早く。
IE9の同様の結果です。「div.something」は 'div [data-something]'よりも少し速いですが、両方とも '.something 'よりもはるかに遅いです。 –
@ T.J.Crowder - IE9で実行して私に数分節約してくれてありがとう:) Firefoxはまったく同じです。これらの結果を含めるようにスクリーンショットを更新しました。 –
'' .test''は、 '' QuerySelectorAll'の代わりに '' getElementsByClassName'を使ってSizzleがDOMの選択を最適化できるようにします。ほとんどのブラウザでは、前者が現在より速くなっています。しかし、 'div.test 'は、' gEBCN'も 'qSA'もサポートしていないIE6やIE7のようなブラウザーでは、手動クラステストを' div'要素だけに絞り込むので高速になるでしょう。 –
良い質問...誰かが$( '*')を試すことができますか? :)常にそれが何であるか、またはその成果が何であるかを知りたがっています – ggzone