Sizzle のコンパイル実行プロセスを理解するには、まず、関連する各サブルーチンの関数と主要な変数と関数を理解する必要があります。jQuery-1.10.2 バージョンのコンパイル コードを 1 つずつ説明します。助けてください。
elementMatcher(マッチャー)
1. ソースコード
2. 機能
この関数は、受信した要素が一致する実行関数配列マッチャーに一致するかどうかを判断する関数を返します。一致しない場合は false を返し、一致しない場合は true を返します。
マッチャーが要素を 1 つだけ持つ場合は要素自体を返し、それ以外の場合は新しい関数 (コード内の function(elem, context, xml) 関数) を返します。
return 関数の効果は context.filter(selectors) に似ています。もちろん、結果は true または false のみを返し、jQuery オブジェクトは返しません。
3. パラメータ
matchers - 配列。各要素は非疑似クラスのマッチャー実行関数です。例: 実際の実行プロセス div.map span:lt(10) では、div と map の一致する実行関数がマッチャーの 2 つの要素として elementMatcher 関数に渡され、span ノードの親ノードかどうかをフィルタリングします。要件を満たしています。
4. 戻り関数
4.1 マッチャーに複数の要素がある場合、次の関数が返されます:
4.1.1 機能
マッチャーは最後の要素から最初の要素まで順番に呼び出され、受信要素ノードが要件を満たしているかどうかを照合します。すべてが満たされている場合は true が返され、そうでない場合は false が返されます。
4.1.2 パラメータ
elem - チェックされる単一のノード要素。
context - セレクター文字列全体のマッチングを実行するコンテキスト ノード。ほとんどの場合、役に立ちません。
xml——現在の検索オブジェクトは HTML ドキュメントですか?それとも XML ドキュメントですか? HTML の場合、xml パラメータは false です。
4.2 マッチャーに要素が 1 つしかない場合は、要素自体を返します。
4.2.1 関数
受信した要素がセレクターと一致するかどうかを確認し、一致する場合は true を返し、一致しない場合は false を返します。
4.2.2 パラメータ
4.1.2 パラメータの説明と同じ。