マルチパートjQuery
セレクタの検索の標準方向とは何ですか?jQueryのセレクタDOMのトラバーサル方向と効率
ケース
$('#myTable tr.selected');
は最初#myTable
を検索し、その後、tr.selected
検索のみをそのテーブル内にありますか?
または、すべてのページのtr.selected
を最初に検索し、2番目の検索でそれぞれの親ノードを確認していますか?
マルチパートjQuery
セレクタの検索の標準方向とは何ですか?jQueryのセレクタDOMのトラバーサル方向と効率
ケース
$('#myTable tr.selected');
は最初#myTable
を検索し、その後、tr.selected
検索のみをそのテーブル内にありますか?
または、すべてのページのtr.selected
を最初に検索し、2番目の検索でそれぞれの親ノードを確認していますか?
#myTableの最初検索しtr.selected検索はまず、それが
myTable
のIDを持つ要素を検索し、その子孫を発見するだけでテーブル内
ありますselected
クラスの「tr」タグ
this talk by John Resig on the subjectをご覧ください。彼は、あなたが期待するかもしれないものに反して、セレクタエンジンはtr.selected
を検索して、祖先が#myTable
と一致するかどうかを確認します、と言っています。
これはCSSがうまく動作する方法です。これが私に質問を導くものです。これは、一般的に、セレクタに提供する情報が少ないほど効率が良いことを示しています。 – fearofawhackplanet
私は確かに分かりません。 jQueryはSizzleを使用しており、Sizzleは利用可能な場合は 'querySelectorAll'を使用します。答えは「それに依存する」かもしれません。異なるブラウザでは、処理が異なる場合があり、最適化が異なる場合があります。 'querySelectorAll'を使用しているときに、ユーザーエージェントがDOMをどのようにトラバースすべきかを指定する標準がない限り、 –
私は上記のあなたのコメントが正しいと思います。ビデオ*(私はまだそれを見ていないが、それを投稿していただきありがとうございます)*では、ジョンは競合するjavascriptベースのセレクタエンジン間の比較について話しているに違いありません。そうですか? – user113716