Werden die Auftragsobjekte von einem angegebenen jQuery-Selektor zurückgegeben?

92

Alle jQuery-Selektoren geben ein Array von Objekten zurück. Befinden sich diese Objekte immer in derselben Reihenfolge wie im HTML-Code? Kann ich mich darauf verlassen?

user28584
quelle

Antworten:

114

Ja.
In den Versionshinweisen zu jQuery 1.3.2 heißt es:

In Dokumentenreihenfolge zurückgegebene Elemente

Dies ist eine Änderung an der Selector-Engine von jQuery, mit der die zurückgegebenen Ergebnisse in der Reihenfolge der Dokumente neu angeordnet werden, anstatt in der Reihenfolge, in der die Selektoren übergeben wurden. Diese Änderung wurde vorgenommen, um der Selectors-API-Spezifikation (welche) zu entsprechen jQuery wird intern in Browsern verwendet, die dies unterstützen.

Dies war bei jQuery 1.3 nicht der Fall :

Die Reihenfolge der Stilauswahl "a, b, c" kann sich ändern. Browser, die querySelectorAll unterstützen (Safari, Firefox 3.5+, Opera 10+, IE 8+), geben die Elemente in Dokumentreihenfolge zurück, andere Browser geben sie (derzeit) in der angegebenen Reihenfolge zurück. In Version 1.3.2 und höher werden alle durch Kommas getrennten Selektoren in Dokumentreihenfolge zurückgegeben.

Kobi
quelle
1
Interessant, dass es wirklich in Versionshinweisen steht und es auch Sinn macht, aber jemand hat es vergessen, es auch in api.jquery.com/multiple-selector zu platzieren - lieber jemand, bitte fügen Sie diese Informationen auch dort hinzu :)!
jave.web
8

Es kann einige Ausnahmen geben, zum Beispiel von der prevAll () -Dokumentation:

"Bei einem jQuery-Objekt, das eine Reihe von DOM-Elementen darstellt, durchsucht die Methode .prevAll () die Vorgänger dieser Elemente im DOM-Baum und erstellt aus den übereinstimmenden Elementen ein neues jQuery-Objekt. Die Elemente werden in der Reihenfolge beginnend mit zurückgegeben nächstgelegenes Geschwister . "

http://api.jquery.com/prevAll/

Emery Lapinski
quelle
3

Ja, sie sind immer in der Reihenfolge wie im DOM.

reko_t
quelle
0

Wahrscheinlich durchläuft ein Selektor in der Reihenfolge, in der er sie findet, das DOM und wenn er ein übereinstimmendes Element findet, fügt er es in ein Array ein.

Sie könnten vielleicht einen Test durchführen, indem Sie 5 Textfelder mit den IDs "textbox_n" sagen, wobei n eine Zahl ist. Dann die Liste alarmieren und sehen, was Sie erhalten?

royse41
quelle