1. ホーム
  2. jquery

[解決済み】jQueryで最も速いchildren()またはfind()とは何ですか?

2022-03-26 09:53:53

質問

jQueryで子ノードを選択するには、children()を使用することもできますが、find()を使用することもできます。

例えば

$(this).children('.foo');

と同じ結果になる。

$(this).find('.foo');

さて、どのオプションが最も速いか、あるいは好ましいか、その理由は?

解決方法は?

children() はノードの直下の子だけを見るのに対し find() はノードの下の DOM 全体を走査するので children() が必要です。 は、同等の実装であれば、より高速になります。しかし find() ネイティブ ブラウザのメソッドを使用し、一方 children() ジャバスクリプト はブラウザで解釈されます。 私の実験では、典型的なケースでは、それほど大きな性能差はありませんでした。

どちらを使うかは、直系の子孫だけを考慮するか、DOMでこのノードより下のすべてのノードを考慮するかによって決まります。つまり、メソッドの速度ではなく、求める結果に基づいて適切なメソッドを選択するのです。もし本当にパフォーマンスが問題なら、実験して最適な解決策を見つけてそれを使ってください(あるいは、ここの他の回答にあるベンチマークのいくつかを見てください)。