Pour comprendre le processus d'exécution de la compilation de Sizzle, vous devez d'abord comprendre les fonctions, les variables clés et les fonctions de chaque sous-programme impliqué. J'expliquerai le code de compilation de la version jQuery-1.10.2 un par un. t'aider.
elementMatcher(matchers)
1.Code source
2. Fonction
Cette fonction renvoie une fonction pour déterminer si l'élément entrant correspond aux correspondants du tableau de fonctions d'exécution correspondant. Si ce n'est pas le cas, elle renvoie false, sinon elle renvoie true.
Si les matchers n'ont qu'un seul élément, renvoyez l'élément lui-même, sinon renvoyez une nouvelle fonction - la fonction function(elem, context, xml) dans le code.
L'effet de la fonction de retour est quelque peu similaire à context.filter(selectors). Bien sûr, le résultat ne renvoie que vrai ou faux, pas un objet jQuery.
3. Paramètres
matchers - tableau, chaque élément est une fonction d'exécution de matcher non pseudo-classe. Par exemple : pendant le processus d'exécution réel, div.map span:lt(10), les fonctions d'exécution correspondantes de div et map seront transmises à la fonction elementMatcher en tant que deux éléments des matchers pour filtrer si le nœud parent du nœud span répond aux exigences.
4. Fonction de retour
4.1 Si les matchers ont plus d'un élément, la fonction suivante sera renvoyée :
4.1.1 Fonction
Les matchers sont appelés séquentiellement du dernier élément au premier élément pour déterminer si les nœuds d'élément entrants répondent aux exigences. True est renvoyé si tous sont remplis, sinon false est renvoyé.
4.1.2 Paramètres
elem - l'élément de nœud unique à vérifier.
context - le nœud de contexte qui effectue la correspondance complète de la chaîne de sélection, la plupart du temps, il est inutile.
xml——L'objet de recherche actuel est-il un document HTML ou XML ? S'il s'agit de HTML, le paramètre xml est faux.
4.2 Si les matchers n'ont qu'un seul élément, renvoyez l'élément lui-même.
4.2.1 Fonction
Vérifie si l'élément entrant correspond au sélecteur, renvoie vrai s'il correspond, sinon renvoie faux.
4.2.2 Paramètres
Identique à la description du paramètre 4.1.2.