Wie kann ich erfahren, wie jQuery-Selektoren hinter den Kulissen funktionieren?
Lesezeit: 2 Minuten
Dorsey
Zum Beispiel, wenn wir verwenden $('div span')wie führt jQuery eine solche Suche für uns durch?
Sucht es nach dem span Element zuerst oder das div?
Es scheint, dass die offizielle Seite von jQuery keine Erklärung zu diesen Dingen hat; Es zeigt uns nur, welche Funktionen über die API verfügbar sind.
Ich möchte wissen, wie jeder Selektor vom Typ jQuery implementiert wird, damit ich den besten Selektor auswählen kann.
Und im Falle bestimmter Selektoren ist die endgültige Antwort oft hier: github.com/jquery/sizzle
– James Allardice
24. Juli 2012 um 13:19 Uhr
Wenn Sie andererseits Ihre Selektoren danach auswählen, welcher die Suche am effizientesten durchführt, führen Sie wahrscheinlich eine völlig irrelevante Mikrooptimierung durch.
– JJJ
24. Juli 2012 um 13:20 Uhr
Blazemonger
Im Großen und Ganzen, was Sie wissen müssen:
jQuery liest Selektoren von rechts nach links.
Die Verwendung einer genauen ID ist am schnellsten, gefolgt von der Verwendung eines genauen Tag-Namens, da sie optimierte JavaScript-native Methoden verwenden.
Es sucht nach der span Elemente zuerst. Es analysiert den Selektor wie folgt:
Jedes Element mit tagName = span
Einen Vorfahren mit tagName = div haben
Für den ersten Teil kann es die verwenden getElementsByTagName Methode, um alle zu finden span Elemente, dann muss es die Vorfahren der einzelnen Elemente durchlaufen, um danach zu suchen div Elemente.
Am einfachsten wäre es, direkt von der Quelle zu lesen. Laden Sie die uncompresserd-Quelle von der jquery-Site herunter und lesen Sie aus der Rohquelle, was sie tut und in welcher Reihenfolge.
Wie @Juhana kommentiert hat, wenn Sie wissen möchten, welche spezifischen Methoden jQuery verwendet, um Objekte basierend auf seinen Selektoren auszuwählen, schauen Sie sich das Github-Repository an:
Die definitive Antwort ist hier: github.com/jquery/jquery
– JJJ
24. Juli 2012 um 13:18 Uhr
Überprüfen Sie den jQueru-Quellcode code.jquery.com/jquery-latest.js
– Schju
24. Juli 2012 um 13:19 Uhr
Und im Falle bestimmter Selektoren ist die endgültige Antwort oft hier: github.com/jquery/sizzle
– James Allardice
24. Juli 2012 um 13:19 Uhr
Wenn Sie andererseits Ihre Selektoren danach auswählen, welcher die Suche am effizientesten durchführt, führen Sie wahrscheinlich eine völlig irrelevante Mikrooptimierung durch.
– JJJ
24. Juli 2012 um 13:20 Uhr