jqueryでは、DOM内の順序付けられていないリスト内でリスト項目を見つける2つの方法があるようです。cssセレクタとjquery traversal
$("ul>li");
と
$("ul").find("li");
は、後者がより好ましいかもしれない理由はありますか?同じ結果を得るにはより多くのコードが必要になるようです。
jqueryでは、DOM内の順序付けられていないリスト内でリスト項目を見つける2つの方法があるようです。cssセレクタとjquery traversal
$("ul>li");
と
$("ul").find("li");
は、後者がより好ましいかもしれない理由はありますか?同じ結果を得るにはより多くのコードが必要になるようです。
速度。 .find()
が毎回勝つでしょう。そして処理のスピードは同じです!
jsPerf speed test to show what I mean
.find()
は下位(子供、子供たちの子供たち、子供たちの子供たちの子供たち、など)で、>
は、直接の子セレクタですべてを取得しますが。その優れたリンゴ・ツー・リンゴ、次のいずれかを比較する:あなたが.find('li')
をすれば、それはまだへの最速の方法になるだろうが、$('ul').children('li')
対$('ul').find('li')
$('ul > li')
対
$('ul li')
を.children('li')
よりも速くしてください。 1)彼らは同じじゃない、2番目の形式は$("ul li");
に相当しますと、最初のものが$("ul").children("li")
2)あなたは二番目の形式を使用している場合、あなたはjQueryの構文解析タスクを簡素化することと等価です。しかし、あなたのコードは単純ではありませんので、スピードがあなたのケースでは非常に適切であることが証明されていない限り、私はそれをお勧めしません。これは、通常、たとえば要素キャッシュやその他のトラバース関数などのコードが多く、find
の使用を正当化していると言われています。
'find'が一致するすべての子孫要素を選択し、'>は '直接の子セレクタです。これは、あなたがjQueryのドキュメントを読んでいないことを示しています。 – undefined
あなたは間違っています。 '$(" ul> li ")'は、 '' ul'の最初の '' li''を見つけます。 '$(" ul ")。find(" li ")' 。最初の場合、 '$(" ul li ")'の意味ですか? – WooCaSh
*それに依存します。ほとんどの場合、パフォーマンスに基づいて使用するバージョンを決定しようとすると、成熟前の最適化が行われるため、ほとんどの場合、どのメンバを使用するかを気にするのではなく、メンテナンスしやすく、読みやすい/もっと早く。 –