DOMをトラバースするものとそうでないものを知る方法はありますか?jqueryセレクタがDOMをトラバースする方法についてのいくつかの質問
$('div p')
これはdiv要素をすべて返してから、最初のdiv検索で返された各dom要素のP要素をもう一度スキャンするようです。
$('div .foo')
クラスはDOMをスキャンしていないようです。クラスfooを含む要素の前のリスト$( 'div')のみをフィルタリングします。 $( 'div')の子がクラスfooを持つ場合、それは選択されません。
ダストは含まれません。だから、比較するラムダとリストのラムダのリストを1回だけスキャンしているようです。しかし、これは本当に混乱するようなフィルタを持っているときに:contains( 'x')彼らは自分自身でdomを再帰できるように思える。
これらのセレクタはどのように機能しますか? 'div .foo'は最初にdivだけをトラバースしてから、fooを含むクラスのフィルタを実行するか、何らかの形でtag == Div & & class == fooのときに計算されます。セレクタが複数ある場合はどうですか?それらはページ上に登場した順番で表示されます。私はドームをスキャンしたような気分になります。たぶんそれは並べ替え、返される前に房を削除する?
技術的には、 '$(div .foo)'はすべての '.foo'要素を検索し、THENは' div'をフィルタリングします。 – Blazemonger
独自の結果が得られる限り、https://github.com/jquery/jquery/blob/master/src/traversing.js#L40をご覧ください。 – pimvdb
@ mblase75 NO !! DIV要素のすべてのクラスfooをチェックします! – TeChn4K