¿Los objetos de orden son devueltos por un selector de jQuery especificado?

93

Todos los selectores de jQuery devuelven una matriz de objetos. ¿Estos objetos están siempre en el mismo orden que en el HTML? ¿Puedo confiar en esto?

user28584
fuente

Respuestas:

115

Si.
Las notas de la versión de jQuery 1.3.2 dicen:

Elementos devueltos en orden de documento

Este es un cambio en el motor de selección de jQuery que reordena los resultados devueltos para que estén en el orden del documento, en lugar del orden en el que se pasaron los selectores. Este cambio se realizó para cumplir con la especificación de la API de selectores (que jQuery utiliza, internamente, en los navegadores que lo admiten).

Este no fue el caso en jQuery 1.3 :

El orden de los selectores de estilo "a, b, c" puede cambiar. Los navegadores que admiten querySelectorAll (Safari, Firefox 3.5+, Opera 10+, IE 8+) devolverán los elementos en el orden del documento, otros navegadores (actualmente) los devolverán en el orden especificado. En 1.3.2 y versiones posteriores, todos los selectores separados por comas se devolverán en el orden del documento.

Kobi
fuente
1
Es interesante que realmente esté en las notas de la versión, y también tiene sentido, pero alguien lo olvidó para ponerlo también en api.jquery.com/multiple-selector . Querido, ¡agregue esta información allí también :)!
jave.web
La respuesta es realmente antigua, ¿alguien ha encontrado un enlace actualizado?
Daniel Leach
1
@DanielLeach - Actualicé los enlaces, gracias. Este comportamiento aún debería ser correcto, también se documenta aquí para la última versión: api.jquery.com/multiple-selector
Kobi
8

Puede haber algunas excepciones, por ejemplo, de la documentación prevAll ():

"Dado un objeto jQuery que representa un conjunto de elementos DOM, el método .prevAll () busca a través de los predecesores de estos elementos en el árbol DOM y construye un nuevo objeto jQuery a partir de los elementos coincidentes; los elementos se devuelven en orden comenzando con el hermano más cercano ".

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

Emery Lapinski
fuente
3

Sí, siempre están en el orden que están en el DOM.

reko_t
fuente
0

Probablemente en el orden en que los encuentra, un selector atraviesa prácticamente el DOM y cuando encuentra un elemento que coincide, lo coloca en una matriz.

Tal vez podría hacer una prueba con 5 cuadros de texto con id's de "textbox_n" donde n es un número, luego alertar a la lista y ver lo que obtiene.

royse41
fuente