Ich verwende JQuery, um einige Elemente auf einer Seite auszuwählen und sie dann im DOM zu verschieben. Das Problem, das ich habe, ist, dass ich alle Elemente in der umgekehrten Reihenfolge auswählen muss, in der JQuery sie natürlich auswählen möchte. Zum Beispiel:
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li>Item 4</li>
<li>Item 5</li>
</ul>
Ich möchte alle li-Elemente auswählen und den Befehl .each () für sie verwenden, aber ich möchte mit Element 5, dann Element 4 usw. beginnen. Ist dies möglich?
javascript
jquery
arrays
reverse
Jack Mills
quelle
quelle
<li>Item 5</li>
mit einem Index von 0 rechnen ..get()
das mit jQuery umschlossene Array in ein gewöhnliches JS-Array verwandelt. Das JS-Array hat.reverse()
.Array.reverse()
beide ändert die Anordnung an Ort und Stelle und gibt die umgekehrte Anordnung. Diese Lösung basiert also tatsächlich darauf, dass $ (). Get () ein neues Array zurückgibt und nicht auf ein internes jQuery- oder DOM-Array verweist. Wahrscheinlich eine sichere Wette innerhalb der Grenzen dieses Beispiels. Vorbehaltscodierer.Ich präsentiere Ihnen den saubersten Weg aller Zeiten in Form des kleinsten JQuery-Plugins der Welt:
Verwendungszweck:
- Alles Gute an Michael Geary in seinem Beitrag hier: http://www.mail-archive.com/[email protected]/msg04261.html
quelle
this
Objekt über numerische Eigenschaften und eine Längeneigenschaft, sodass Javascript es indizieren und eine Array-Funktion auf eine jQuery-Instanz anwenden kann.<li>Item 5</li>
mit einem Index von 0 rechnen .Array.prototype.reverse
over tojQuery.prototype.reverse
. Viele der JavaScript-Array-Methoden funktionieren problemlos für alle Objekte, die wie ein Array aussehen - wenn das Objekt über.length
numerische Indexeigenschaften verfügt.reverse
hängt nicht von einer internen Darstellung des Arrays ab; es greift auf das Array die normale Verwendung.length
,[0]
,[1]
usw. wie Array Code , den Sie selbst schreiben würde.reverse
Methode zu erhalten? Wäre es nicht schneller, einfach einen Verweis auf die Funktion zu kopierenArray.prototype.reverse
, zjQuery.fn.reverse = Array.prototype.reverse;
. Nicht so kurz und "clever", aber effizienter? Zugegeben, dies wird in den heutigen blitzschnellen Browsern wahrscheinlich nichtDu kannst tun
gefolgt von
quelle
Hierfür gibt es verschiedene Möglichkeiten:
Erstens : ohne jQuery:
Demo hier
... und mit jQuery:
Sie können dies verwenden:
Demo hier
Eine andere Möglichkeit, auch jQuery mit Reverse zu verwenden, ist:
Diese Demo hier .
Eine weitere Alternative besteht darin, die
length
(Anzahl der Elemente, die mit diesem Selektor übereinstimmen) zu verwenden und von dort mit derindex
jeder Iteration nach unten zu gehen . Dann können Sie dies verwenden:Diese Demo hier
Eine weitere , die irgendwie mit der oben genannten verwandt ist:
Demo hier
quelle
Ich ziehe es vor, ein Reverse-Plug-In zu erstellen, z
Verwendung zB:
quelle
Wenn Sie die Methode nicht in jQuery.fn speichern möchten, können Sie sie verwenden
quelle
Musste ein Reverse für $ .each machen, also habe ich die Vinay-Idee verwendet:
hat gut funktioniert, danke
quelle
$.each(collection.reverse(), ...)
.Sie können mit der jQuery-Funktion nicht jede Funktion rückwärts durchlaufen, aber Sie können trotzdem die jQuery-Syntax nutzen.
Versuche Folgendes:
quelle
Ich fand es
Array.prototype.reverse
mit Objekten nicht erfolgreich, daher habe ich eine neue jQuery-Funktion erstellt, die als Alternative verwendet werden kann :jQuery.eachBack()
. Es iteriert wie gewohntjQuery.each()
und speichert jeden Schlüssel in einem Array. Anschließend wird das Array umgekehrt und der Rückruf für das ursprüngliche Array / Objekt in der Reihenfolge der umgekehrten Schlüssel ausgeführt.quelle
Ich denke du brauchst
quelle
Sie können es auch versuchen
quelle