jQuery で子ノードを選択するには、children() だけでなく find() も使用できます。
例えば:
$(this).children('.foo');
同じ結果になります:
$(this).find('.foo');
さて、どのオプションが最も速く、または好ましいのでしょうか。また、その理由は何でしょうか。
ベストアンサー1
children()
ノードの直下の子のみを参照しますが、find()
はノードの下の DOM 全体をトラバースするため、同等の実装であればより高速になるchildren()
はずです。ただし、はネイティブfind()
ブラウザ メソッドを使用するのに対し、はブラウザで解釈されるJavaScriptを使用します。私の実験では、一般的なケースではパフォーマンスに大きな違いはありません。children()
どちらを使用するかは、DOM 内でこのノードの直下の子孫のみを考慮するか、このノードの下にあるすべてのノードを考慮するかによって異なります。つまり、メソッドの速度ではなく、必要な結果に基づいて適切なメソッドを選択します。パフォーマンスが本当に問題である場合は、最適なソリューションを見つけるために実験し、それを使用します (または、ここにある他の回答のベンチマークを参照してください)。