Les objets de commande sont-ils renvoyés par un sélecteur jQuery spécifié?

93

Tous les sélecteurs jQuery renvoient un tableau d'objets. Ces objets sont-ils toujours dans le même ordre que dans le HTML? Puis-je me fier à cela?

user28584
la source

Réponses:

115

Oui.
Les notes de publication de jQuery 1.3.2 disent:

Éléments renvoyés dans l'ordre des documents

Il s'agit d'une modification apportée au moteur de sélection de jQuery qui réorganise les résultats renvoyés pour qu'ils soient dans l'ordre du document, au lieu de l'ordre dans lequel les sélecteurs ont été transmis. Cette modification a été effectuée afin d'être conforme à la spécification de l'API Selectors (qui jQuery utilise, en interne, dans les navigateurs qui le prennent en charge).

Ce n'était pas le cas sur jQuery 1.3 :

L'ordre des sélecteurs de style "a, b, c" peut changer. Les navigateurs prenant en charge querySelectorAll (Safari, Firefox 3.5+, Opera 10+, IE 8+) renverront les éléments dans l'ordre du document, les autres navigateurs les renverront (actuellement) dans l'ordre spécifié. Dans la version 1.3.2 et les versions ultérieures, tous les sélecteurs séparés par des virgules seront renvoyés dans l'ordre des documents.

Kobi
la source
1
Intéressant que ce soit vraiment dans les notes de publication, et cela a aussi du sens, mais quelqu'un l'a oublié pour le mettre également dans api.jquery.com/multiple-selector - cher quelqu'un, veuillez ajouter cette information là aussi :)!
jave.web
La réponse est vraiment ancienne. Quelqu'un at-il trouvé un lien mis à jour?
Daniel Leach le
1
@DanielLeach - J'ai mis à jour les liens, merci. Ce comportement devrait toujours être correct, il est également documenté ici pour la dernière version: api.jquery.com/multiple-selector
Kobi le
8

Il peut y avoir quelques exceptions, par exemple dans la documentation de prevAll ():

"Étant donné un objet jQuery qui représente un ensemble d'éléments DOM, la méthode .prevAll () recherche parmi les prédécesseurs de ces éléments dans l'arborescence DOM et construit un nouvel objet jQuery à partir des éléments correspondants; les éléments sont renvoyés dans l'ordre commençant par le frère ou sœur le plus proche . "

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

Emery Lapinski
la source
3

Oui, ils sont toujours dans l'ordre car ils sont dans le DOM.

reko_t
la source
0

Probablement dans l'ordre dans lequel il les trouve, un sélecteur parcourt à peu près le DOM et lorsqu'il trouve un élément qui correspond, le met dans un tableau.

Vous pourriez peut-être faire un test en ayant disons 5 zones de texte avec les identifiants de "textbox_n" où n est un nombre, puis alerter la liste et voir ce que vous obtenez?

royse41
la source