Estou usando o JQuery para selecionar alguns elementos em uma página e movê-los no DOM. O problema que estou tendo é que preciso selecionar todos os elementos na ordem inversa que o JQuery naturalmente deseja selecioná-los. Por exemplo:
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li>Item 4</li>
<li>Item 5</li>
</ul>
Quero selecionar todos os itens de li e usar o comando .each () neles, mas quero começar com o Item 5, depois o Item 4 etc. Isso é possível?
javascript
jquery
arrays
reverse
Jack Mills
fonte
fonte
<li>Item 5</li>
ter um índice de 0. #.get()
que transforma o array empacotado jQuery em um array JS comum. A matriz JS possui.reverse()
.Array.reverse()
ambos modificam a matriz no lugar e retornam a matriz invertida. Portanto, esta solução depende, na verdade, de $ (). Get () retornando uma nova matriz, e não uma referência a alguma matriz interna jQuery ou DOM. Provavelmente uma aposta segura dentro dos limites deste exemplo. Advertência Coder.Apresento a você a maneira mais limpa de sempre, na forma do menor plugin jquery do mundo:
Uso:
- Todo o crédito a Michael Geary em seu post aqui: http://www.mail-archive.com/[email protected]/msg04261.html
fonte
this
objeto tem propriedades numéricas e uma propriedade length, para que o javascript possa indexá-lo e aplicar uma função de matriz a uma instância do jQuery?<li>Item 5</li>
ter um índice de 0. #Array.prototype.reverse
over tojQuery.prototype.reverse
. Muitos dos métodos de matriz JavaScript funcionarão bem em qualquer objeto que pareça suficientemente com uma matriz - isto é, se o objeto tiver.length
propriedades de índice numérico.reverse
não depende de alguma representação interna da matriz; ele acessa a matriz usando o normal.length
, etc.[0]
,[1]
assim como o código da matriz que você escreveria.reverse
método? Não seria mais rápido copiar apenas uma referência à funçãoArray.prototype.reverse
, por exemplojQuery.fn.reverse = Array.prototype.reverse;
? Não é tão curto e "inteligente", mas mais eficiente? É certo que este provavelmente será imperceptível em navegadores extremamente rápidas de hoje, mas ainda assim ...Você pode fazer
Seguido por
fonte
Aqui estão opções diferentes para isso:
Primeiro : sem jQuery:
Demonstração aqui
... e com jQuery:
Você pode usar isto:
Demonstração aqui
Outra maneira, usando também o jQuery com reverse é:
Esta demonstração aqui .
Mais uma alternativa é usar o
length
(número de elementos correspondentes a esse seletor) e descer a partir daí usandoindex
cada iteração. Então você pode usar isso:Esta demonstração aqui
Mais um , meio que relacionado ao anterior:
Demonstração aqui
fonte
Eu prefiro criar um plug-in reverso, por exemplo
Uso por exemplo:
fonte
Se você não deseja salvar o método no jQuery.fn, pode usar
fonte
Precisava fazer um reverso em $ .each, então usei a idéia do Vinay:
funcionou bem, obrigado
fonte
$.each(collection.reverse(), ...)
.Você não pode iterar para trás com cada função do jQuery, mas ainda pode aproveitar a sintaxe do jQuery.
Tente o seguinte:
fonte
Achei
Array.prototype.reverse
mal sucedida com objetos, então eu fiz uma nova função jQuery para usar como uma alternativa:jQuery.eachBack()
. Ele itera como o normaljQuery.each()
faria e armazena cada chave em uma matriz. Em seguida, ele reverte essa matriz e executa o retorno de chamada na matriz / objeto original na ordem das teclas invertidas.fonte
Eu acho que você precisa
fonte
Você também pode tentar
fonte