w3schools loop for example array javascript jquery html order

javascript - for - loop $.each jquery



¿Se garantiza el orden de jQuery''s $(). Each()? (2)

Así que después de leer los documentos y de que aún no estoy seguro, terminé buceando leyendo el código fuente de jQuery (gracias a la respuesta de @RoryMcCrossan por haberme preguntado sobre eso).

De hecho (al contrario de lo que dijo @RoryMcCrossan), $().each() Each $().each() usa ya sea for...in o for , dependiendo de si la entrada es un objeto o una matriz .

Para ''matriz'', basta con ser un objeto ''similar a una matriz'', que es el caso de un objeto jQuery porque contiene una lista numerada de elementos y una propiedad de length .

Por lo tanto, una llamada a $().each() se usará for y no for...each medida que itera sobre un objeto jQuery. Y como estamos usando, sabemos que podemos garantizar el orden de iteración para $().each() coincidirá con el orden de los elementos que se le asignan.

Entonces eso me lleva a hacer una pregunta de seguimiento sobre si el orden de los elementos dados por la consulta original garantiza que serán los mismos que aparecen en el DOM. Si es así, entonces debería estar bien.

La respuesta a eso se puede encontrar en la pregunta vinculada en los comentarios de @Mritunjay , y la respuesta es ''sí, se devuelven en el orden en que aparecen en el DOM.

Entonces, la respuesta final es que sí, puedo usar $(''.myList li'').each() y recorrer los elementos de la lista en el orden en que aparecen en el DOM.

Gracias por la ayuda y las indicaciones chicos. Muy apreciado.

En una página de mi sitio tengo una lista de entradas creadas por el usuario - HTML estándar <ul> con elementos <li> dentro de ella.

Quiero iterar a través de la lista, pero el orden de los elementos es importante.

Usando jQuery $(''.myList li'').each() , ¿puedo garantizar que obtendré los elementos li en el orden en que aparecen en el DOM?

De mis pruebas hasta el momento, parece que se iteraron en el orden correcto, pero no puedo encontrar nada que me diga que está garantizado.

Si no se garantiza, ¿cuál sería el siguiente mejor método alternativo para iterar a través de ellos en orden?


No puede garantizar el orden en que each repetirá los eventos. En general, se reducirá al orden en que aparecen en el DOM, pero esto no está en la especificación for...in declaración (que es lo que $.each usa internamente).

Si necesita garantizar el orden de each iterador, sort los elementos antes de recorrerlos.