ホームページ ウェブフロントエンド jsチュートリアル jQueryセレクターのソースコード解釈(7):elementMatcher function_jquery

jQueryセレクターのソースコード解釈(7):elementMatcher function_jquery

May 16, 2016 pm 04:06 PM
jquery 関数 ソースコードの解釈 セレクタ

Sizzle のコンパイル実行プロセスを理解するには、まず、関連する各サブルーチンの関数と主要な変数と関数を理解する必要があります。jQuery-1.10.2 バージョンのコンパイル コードを 1 つずつ説明します。助けてください。

elementMatcher(マッチャー)

1. ソースコード

コードをコピーします コードは次のとおりです:

関数 elementMatcher(matchers) {
return matchers.length > 1 ? function(elem, context, xml) {
var i = matchers.length;
while (i--) {
if (!matchers[i](elem, context, xml)) {
false を返します;
}
}
true を返します;
} : matchers[0];
}

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 マッチャーに複数の要素がある場合、次の関数が返されます:

コードをコピー コードは次のとおりです:

関数(要素、コンテキスト、xml) {
var i = matchers.length;
while (i--) {
if (!matchers[i](elem, context, xml)) {
false を返します;
}
}
true を返します;
}

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 パラメータの説明と同じ。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

golang 関数で新しい関数を動的に作成するためのヒント golang 関数で新しい関数を動的に作成するためのヒント Apr 25, 2024 pm 02:39 PM

golang 関数で新しい関数を動的に作成するためのヒント

C++ 関数の命名におけるパラメーターの順序に関する考慮事項 C++ 関数の命名におけるパラメーターの順序に関する考慮事項 Apr 24, 2024 pm 04:21 PM

C++ 関数の命名におけるパラメーターの順序に関する考慮事項

Java で効率的で保守しやすい関数を記述するにはどうすればよいでしょうか? Java で効率的で保守しやすい関数を記述するにはどうすればよいでしょうか? Apr 24, 2024 am 11:33 AM

Java で効率的で保守しやすい関数を記述するにはどうすればよいでしょうか?

C++関数のデフォルトパラメータと可変パラメータの長所と短所の比較 C++関数のデフォルトパラメータと可変パラメータの長所と短所の比較 Apr 21, 2024 am 10:21 AM

C++関数のデフォルトパラメータと可変パラメータの長所と短所の比較

Excel関数の公式の完全なコレクション Excel関数の公式の完全なコレクション May 07, 2024 pm 12:04 PM

Excel関数の公式の完全なコレクション

参照型を返す C++ 関数の利点は何ですか? 参照型を返す C++ 関数の利点は何ですか? Apr 20, 2024 pm 09:12 PM

参照型を返す C++ 関数の利点は何ですか?

C++ 関数例外の詳細: カスタマイズされたエラー処理 C++ 関数例外の詳細: カスタマイズされたエラー処理 May 01, 2024 pm 06:39 PM

C++ 関数例外の詳細: カスタマイズされたエラー処理

C++ 関数での参照パラメータとポインタ パラメータの高度な使用法 C++ 関数での参照パラメータとポインタ パラメータの高度な使用法 Apr 21, 2024 am 09:39 AM

C++ 関数での参照パラメータとポインタ パラメータの高度な使用法

See all articles