Używam JQuery, aby wybrać niektóre elementy na stronie, a następnie przenieść je w DOM. Problemem jest to, że muszę wybrać wszystkie elementy w odwrotnej kolejności, aby JQuery naturalnie je wybrało. Na przykład:
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li>Item 4</li>
<li>Item 5</li>
</ul>
Chcę wybrać wszystkie pozycje li i użyć na nich polecenia .each (), ale chcę zacząć od pozycji 5, a następnie pozycji 4 itd. Czy to możliwe?
javascript
jquery
arrays
reverse
Jack Mills
źródło
źródło
<li>Item 5</li>
mieć indeks 0..get()
tablicę owiniętą jQuery w zwykłą tablicę JS. Tablica JS ma.reverse()
.Array.reverse()
zarówno modyfikuje tablicę w miejscu, jak i zwraca tablicę odwróconą. Zatem to rozwiązanie faktycznie polega na zwróceniu nowej tablicy przez $ (). Get (), a nie odwołanie do wewnętrznej tablicy jQuery lub DOM. Prawdopodobnie bezpieczny zakład w ramach tego przykładu. Caveat Coder.Przedstawiam Ci najczystszy sposób w historii, w postaci najmniejszej na świecie wtyczki jquery:
Stosowanie:
- Podziękowania dla Michaela Geary'ego w jego poście tutaj: http://www.mail-archive.com/[email protected]/msg04261.html
źródło
this
obiekt ma właściwości numeryczne i właściwość length, więc javascript może go zindeksować i zastosować funkcję tablicową do instancji jQuery?<li>Item 5</li>
mieć indeks 0.Array.prototype.reverse
overjQuery.prototype.reverse
. Wiele metod tablicowych JavaScript działa dobrze na każdym obiekcie, który wygląda wystarczająco jak tablica - to znaczy, jeśli obiekt ma.length
właściwości indeksu numerycznego.reverse
nie zależy od wewnętrznej reprezentacji tablicy; to uzyskuje dostęp do tablicy przy użyciu normalnego.length
,[0]
,[1]
itd., tak jak kod tablicy chcesz napisać samemu.reverse
metodę? Czy nie byłoby szybciej po prostu skopiować odwołanie do funkcjiArray.prototype.reverse
, np.jQuery.fn.reverse = Array.prototype.reverse;
? Nie tak krótki i „sprytny”, ale bardziej wydajny? Wprawdzie będzie to prawdopodobnie niezauważalne w dzisiejszych błyskawicznych przeglądarkach, ale nadal ...Możesz to zrobić
śledzony przez
źródło
Oto różne opcje:
Po pierwsze : bez jQuery:
Demo tutaj
... oraz z jQuery:
Możesz użyć tego:
Demo tutaj
Innym sposobem korzystania z jQuery z odwrotnością jest:
To demo tutaj .
Jeszcze jedną alternatywą jest użycie
length
(liczba elementów pasujących do tego selektora) i zejście stamtąd za pomocąindex
każdej iteracji. Następnie możesz użyć tego:To demo tutaj
Jeszcze jedno , trochę związane z powyższym:
Demo tutaj
źródło
Wolę tworzyć odwrotną wtyczkę np
Zastosowanie np .:
źródło
Jeśli nie chcesz zapisać metody w pliku jQuery.fn, możesz użyć
źródło
Musiałem zrobić odwrotność dla $ .each, więc skorzystałem z pomysłu Vinay:
działało ładnie, dzięki
źródło
$.each(collection.reverse(), ...)
.Nie można iterować wstecz z każdą funkcją jQuery, ale nadal można korzystać ze składni jQuery.
Spróbuj wykonać następujące czynności:
źródło
Znalazłem
Array.prototype.reverse
powiodła się z obiektami, więc zrobiłem nową funkcję jQuery do wykorzystania jako alternatywa:jQuery.eachBack()
. Powtarza się tak, jak zwyklejQuery.each()
, i zapisuje każdy klucz w tablicy. Następnie odwraca tę tablicę i wykonuje wywołanie zwrotne na oryginalnej tablicy / obiekcie w kolejności odwróconych kluczy.źródło
Myślę, że potrzebujesz
źródło
Możesz także spróbować
źródło