
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.
Wisst ihr wo ich solche Infos bekommen kann?

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.
- Native CSS-Selektoren wie
:first-child
sind schneller als jQuery-Selektoren wie :first
.
Sie können auch die lesen offizielle Sizzle-Dokumentationaber es geht nicht wirklich auf Optimierungstechniken ein.
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.
http://jquery.com/download/

Curtis
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:
https://github.com/jquery/jquery/
Sehen Sie sich alternativ den Quellcode an, der im unkomprimierten jQuery-Download verfügbar ist:
http://jquery.com/download/
Wenn Sie nur wissen möchten, welche verschiedenen Selektoren für Sie verfügbar sind, bietet jQuery hier eine Liste davon:
http://api.jquery.com/category/selectors/

Alnitak
Sie werden von rechts nach links analysiert.
Sehen http://csswizardry.com/2011/09/writing-efficient-css-selectors/ und Warum gleichen Browser CSS-Selektoren von rechts nach links ab?
9956500cookie-checkWie kann ich erfahren, wie jQuery-Selektoren hinter den Kulissen funktionieren?yes
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