物事のカップルは、私に飛び出す:
#foo:eq(0)
- :eq(0)
はほぼ確実に完全に不要です。 :eq
は「このインデックスで一致するセットの要素」を意味し、もちろんIDが1つの要素しか存在できません。すぐに私はフラグを立てます:全体的なことは、同じ文書内で重複IDを使用していますか?
:eq(0)
はセレクタの標準CSSではない唯一の部分でもあり、jQueryにブラウザをさせるのではなく、Sizzle(独自のエンジン)でセレクタを強制的に処理させます。パフォーマンスの問題が発生する可能性はありますか?いいえ(あるいはそうであればそれについて心配しますが)それは無意味です。
body
部分は完全に無意味です。
セレクタの子孫としてIDセレクタが表示されるたびに、著者はドキュメント内のIDの規則を実際に理解しているかどうか疑問に思います(これは#1に関連していますが少し異なります)。セレクタはではなく、単に#foo
と同じです。決定的なのは、#foo
が#foo
という要素をどこにも置いているのに対し、の場合はというdiv内のdivの内側にある場合にのみ見つけます。したがって、IDセレクタで有効に終わる子孫セレクタを使用している間は、を有効にすることができます(要素が期待されていない場合は要素を無視する場合)。コードレビューでは、私は、なぜ、というコメントを見たいと思うでしょう。
だから、要するに、私はそれが単に$("#foo")
なかった理由について著者からの本当に良い理由をしたいと思います。
あなたのHTML構造が 'body div div ...'を決して変更しないと仮定しています。 – KevBot
特権 – elclanrs
@KevBotは、もしそれが 'div> div'ならもっと大きくなります。 –