J'utilise JQuery pour sélectionner certains éléments sur une page, puis les déplacer dans le DOM. Le problème que j'ai est que je dois sélectionner tous les éléments dans l'ordre inverse que JQuery veut naturellement les sélectionner. Par exemple:
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li>Item 4</li>
<li>Item 5</li>
</ul>
Je veux sélectionner tous les éléments li et utiliser la commande .each () dessus, mais je veux commencer par l'élément 5, puis l'élément 4, etc. Est-ce possible?
javascript
jquery
arrays
reverse
Jack Mills
la source
la source
<li>Item 5</li>
à avoir un indice de 0..get()
qui transforme le tableau encapsulé jQuery en un tableau JS ordinaire. Le tableau JS a.reverse()
.Array.reverse()
fois modifie le tableau en place et renvoie le tableau inversé. Donc, cette solution repose en fait sur $ (). Get () renvoyant un nouveau tableau, et non une référence à un tableau jQuery ou DOM interne. Probablement une valeur sûre dans les limites de cet exemple. Caveat Coder.Je vous présente la manière la plus propre de tous les temps, sous la forme du plus petit plugin jquery au monde:
Usage:
-Tous les remerciements à Michael Geary dans son article ici: http://www.mail-archive.com/[email protected]/msg04261.html
la source
this
objet a des propriétés numériques et une propriété de longueur, donc javascript peut l'indexer et peut appliquer une fonction de tableau à une instance jQuery?<li>Item 5</li>
à avoir un indice de 0.Array.prototype.reverse
over tojQuery.prototype.reverse
. De nombreuses méthodes de tableau JavaScript fonctionneront correctement sur tout objet qui ressemble suffisamment à un tableau - c'est-à-dire si l'objet a.length
des propriétés d'index numérique.reverse
ne dépend pas d'une représentation interne du tableau; il accède au tableau en utilisant la normale.length
,[0]
,[1]
etc. , tout comme le code de tableau que vous souhaitez vous écrivez.reverse
méthode? Ne serait-il pas plus rapide de copier simplement une référence à la fonctionArray.prototype.reverse
, par exemplejQuery.fn.reverse = Array.prototype.reverse;
? Pas aussi court et "intelligent", mais plus efficace? Certes, cela sera probablement imperceptible dans les navigateursTu peux faire
suivi par
la source
Voici différentes options pour cela:
D'abord : sans jQuery:
Démo ici
... et avec jQuery:
Vous pouvez utiliser ceci:
Démo ici
Une autre façon, en utilisant également jQuery avec reverse est:
Cette démo ici .
Une autre alternative consiste à utiliser le
length
(nombre d'éléments correspondant à ce sélecteur) et à descendre à partir de là en utilisant leindex
de chaque itération. Ensuite, vous pouvez utiliser ceci:Cette démo ici
Un de plus , un peu lié à celui ci-dessus:
Démo ici
la source
Je préfère créer un plug-in inverse, par exemple
Utilisation par exemple:
la source
Si vous ne souhaitez pas enregistrer la méthode dans jQuery.fn, vous pouvez utiliser
la source
J'avais besoin de faire un reverse sur $ .each donc j'ai utilisé l'idée de Vinay:
a bien fonctionné, merci
la source
$.each(collection.reverse(), ...)
.Vous ne pouvez pas parcourir en arrière avec chaque fonction jQuery, mais vous pouvez toujours tirer parti de la syntaxe jQuery.
Essayez ce qui suit:
la source
J'ai trouvé
Array.prototype.reverse
sans succès avec des objets, donc je fait une nouvelle fonction de jQuery à utiliser comme une alternative:jQuery.eachBack()
. Il parcourt comme d'habitudejQuery.each()
et stocke chaque clé dans un tableau. Il inverse ensuite ce tableau et effectue le rappel sur le tableau / objet d'origine dans l'ordre des clés inversées.la source
Je pense que tu as besoin
la source
Vous pouvez aussi essayer
la source