Estoy usando JQuery para seleccionar algunos elementos en una página y luego moverlos en el DOM. El problema que tengo es que necesito seleccionar todos los elementos en el orden inverso que JQuery naturalmente quiere seleccionarlos. Por ejemplo:
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li>Item 4</li>
<li>Item 5</li>
</ul>
Quiero seleccionar todos los elementos li y usar el comando .each () en ellos, pero quiero comenzar con el elemento 5, luego el elemento 4, etc. ¿Es esto posible?
javascript
jquery
arrays
reverse
Jack Mills
fuente
fuente
<li>Item 5</li>
tener un índice de 0..get()
que convierte la matriz envuelta jQuery en una matriz JS normal. La matriz JS tiene.reverse()
.Array.reverse()
ambos modifican la matriz en su lugar y devuelven la matriz invertida. Entonces, esta solución realmente depende de que $ (). Get () devuelva una nueva matriz, y no una referencia a alguna matriz interna jQuery o DOM. Probablemente una apuesta segura dentro de los límites de este ejemplo. Codificador de advertencia.Te presento la forma más limpia de la historia, en forma del complemento jquery más pequeño del mundo:
Uso:
-Todos los créditos a Michael Geary en su publicación aquí: http://www.mail-archive.com/[email protected]/msg04261.html
fuente
this
objeto tiene propiedades numéricas y una propiedad de longitud, ¿entonces JavaScript puede indexarlo y puede aplicar una función de matriz a una instancia de jQuery?<li>Item 5</li>
tener un índice de 0.Array.prototype.reverse
over tojQuery.prototype.reverse
. Muchos de los métodos de matriz de JavaScript funcionarán bien en cualquier objeto que se parezca lo suficiente a una matriz, es decir, si el objeto tiene.length
propiedades de índice numérico.reverse
no depende de alguna representación interna de la matriz; accede a la matriz usando el normal.length
, etc.[0]
,[1]
al igual que el código de matriz que escribiría usted mismo.reverse
método? ¿No sería más rápido copiar una referencia a la funciónArray.prototype.reverse
, por ejemplojQuery.fn.reverse = Array.prototype.reverse;
? ¿No tan corto e "inteligente", pero más eficiente? Es cierto que esto probablemente pasará desapercibido en los navegadores rápidos de hoy en día, pero aún así ...Tu puedes hacer
seguido por
fuente
Aquí hay diferentes opciones para esto:
Primero : sin jQuery:
Demo aquí
... y con jQuery:
Puedes usar esto:
Demo aquí
Otra forma, usando también jQuery con reverse es:
Esta demo aquí .
Una alternativa más es usar el
length
(conteo de elementos que coinciden con ese selector) y bajar desde allí usando elindex
de cada iteración. Entonces puedes usar esto:Esta demo aquí
Uno más , más o menos relacionado con el anterior:
Demo aquí
fuente
Prefiero crear un complemento inverso, por ejemplo
Uso, por ejemplo:
fuente
Si no desea guardar el método en jQuery.fn, puede usar
fuente
Necesitaba hacer un reverso en $ .cada uno, así que usé la idea de Vinay:
funcionó bien, gracias
fuente
$.each(collection.reverse(), ...)
.No puede iterar hacia atrás con jQuery en cada función, pero aún puede aprovechar la sintaxis de jQuery.
Intenta lo siguiente:
fuente
He encontrado
Array.prototype.reverse
sin éxito con los objetos, así que hice una nueva función jQuery para usar como alternativa:jQuery.eachBack()
. Se repite como lojQuery.each()
haría normalmente y almacena cada clave en una matriz. Luego invierte esa matriz y realiza la devolución de llamada en la matriz / objeto original en el orden de las teclas invertidas.fuente
Creo que necesitas
fuente
También puedes probar
fuente