Um den Kompilierungsausführungsprozess von Sizzle zu verstehen, müssen Sie zunächst die Funktionen und Schlüsselvariablen und Funktionen jeder beteiligten Unterroutine verstehen. Ich hoffe, dass dies der Fall ist Dir helfen.
elementMatcher(matcher)
1. Quellcode
2. Funktion
Diese Funktion gibt eine Funktion zurück, um zu bestimmen, ob das eingehende Element mit den übereinstimmenden Array-Matchern der Ausführungsfunktion übereinstimmt. Wenn dies nicht der Fall ist, gibt sie „false“ zurück, andernfalls gibt sie „true“ zurück.
Wenn Matcher nur ein Element haben, geben Sie das Element selbst zurück, andernfalls geben Sie eine neue Funktion zurück – die Funktion function(elem, context, xml) im Code.
Der Effekt der Rückgabefunktion ähnelt in gewisser Weise dem von context.filter(selectors). Natürlich gibt das Ergebnis nur true oder false zurück, kein jQuery-Objekt.
3. Parameter
Matcher – Array, jedes Element ist eine Nicht-Pseudoklassen-Matcher-Ausführungsfunktion. Beispiel: Während des eigentlichen Ausführungsprozesses von div.map span:lt(10) werden die übereinstimmenden Ausführungsfunktionen von div und map als zwei Elemente von Matchern an die elementMatcher-Funktion übergeben, um zu filtern, ob der übergeordnete Knoten des Span-Knotens ist erfüllt die Anforderungen.
4. Return-Funktion
4.1 Wenn matchers mehr als ein Element hat, wird die folgende Funktion zurückgegeben:
4.1.1 Funktion
Matcher werden nacheinander vom letzten Element bis zum ersten Element aufgerufen, um zu prüfen, ob die eingehenden Elem-Knoten die Anforderungen erfüllen. Wenn alle erfüllt sind, wird „True“ zurückgegeben, andernfalls wird „False“ zurückgegeben.
4.1.2 Parameter
elem – das einzelne Knotenelement, das überprüft werden soll.
Kontext – der Kontextknoten, der den gesamten Selektor-String-Abgleich durchführt, meistens ist er nutzlos.
xml – Ist das aktuelle Suchobjekt ein HTML- oder XML-Dokument? Wenn es HTML ist, ist der XML-Parameter falsch.
4.2 Wenn matchers nur 1 Element hat, geben Sie das Element selbst zurück.
4.2.1 Funktion
Überprüft, ob das eingehende Elem mit dem Selektor übereinstimmt, gibt true zurück, wenn es übereinstimmt, andernfalls gibt es false zurück.
4.2.2 Parameter
Wie 4.1.2 Parameterbeschreibung.