Saya menggunakan JQuery untuk memilih beberapa elemen pada halaman dan kemudian memindahkannya di DOM. Masalah yang saya alami adalah saya harus memilih semua elemen dalam urutan terbalik yang secara alami ingin dipilih oleh JQuery. Sebagai contoh:
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li>Item 4</li>
<li>Item 5</li>
</ul>
Saya ingin memilih semua item li dan menggunakan perintah .each () pada mereka tetapi saya ingin memulai dengan Item 5, lalu Item 4 dll. Apakah ini mungkin?
javascript
jquery
arrays
reverse
Jack Mills
sumber
sumber
<li>Item 5</li>
untuk memiliki indeks 0..get()
yang mengubah jQuery wrap array menjadi JS array biasa. Array JS memiliki.reverse()
.Array.reverse()
keduanya memodifikasi array di tempat dan mengembalikan array yang terbalik. Jadi solusi ini sebenarnya bergantung pada $ (). Get () mengembalikan array baru, dan bukan referensi ke beberapa jQuery internal atau array DOM. Mungkin taruhan yang aman dalam batas-batas contoh ini. Peringatan Coder.Saya hadir dengan cara terbersih yang pernah ada, dalam bentuk plugin jquery terkecil di dunia:
Pemakaian:
-Semua kredit untuk Michael Geary dalam posnya di sini: http://www.mail-archive.com/[email protected]/msg04261.html
sumber
this
objek memiliki sifat numerik dan properti panjang, jadi javascript dapat mengindeks dan dapat menerapkan fungsi array ke instance jQuery?<li>Item 5</li>
untuk memiliki indeks 0.Array.prototype.reverse
kejQuery.prototype.reverse
. Banyak metode array JavaScript akan berfungsi dengan baik pada objek apa pun yang terlihat cukup seperti array - yaitu jika objek memiliki.length
dan properti indeks numerik.reverse
tidak bergantung pada beberapa representasi internal array; ia mengakses array menggunakan normal.length
,[0]
,[1]
dll seperti kode array yang kau tulis sendiri.reverse
metodenya? Bukankah lebih cepat hanya menyalin referensi ke fungsiArray.prototype.reverse
, misalnyajQuery.fn.reverse = Array.prototype.reverse;
? Tidak sesingkat dan "pintar", tetapi lebih efisien? Memang ini mungkin tidak akan terlihat di browser cepat kilat hari ini, tapi masih ...Anda dapat melakukan
diikuti oleh
sumber
Berikut beberapa opsi untuk ini:
Pertama : tanpa jQuery:
Demo di sini
... dan dengan jQuery:
Anda bisa menggunakan ini:
Demo di sini
Cara lain , menggunakan jQuery juga dengan terbalik adalah:
Demo ini di sini .
Satu lagi alternatif adalah dengan menggunakan
length
(jumlah elemen yang cocok dengan pemilih itu) dan turun dari sana menggunakanindex
setiap iterasi. Maka Anda dapat menggunakan ini:Demo ini di sini
Satu lagi , jenis yang terkait dengan yang di atas:
Demo di sini
sumber
Saya lebih suka membuat reverse plug-in misalnya
Penggunaan misalnya:
sumber
Jika Anda tidak ingin menyimpan metode ke jQuery.fn, Anda dapat menggunakannya
sumber
Diperlukan untuk melakukan pembalikan pada $ .each jadi saya menggunakan ide Vinay:
bekerja dengan baik, terima kasih
sumber
$.each(collection.reverse(), ...)
.Anda tidak dapat mengulangi mundur dengan fungsi masing-masing jQuery, tetapi Anda masih dapat memanfaatkan sintaks jQuery.
Coba yang berikut ini:
sumber
Saya menemukan
Array.prototype.reverse
tidak berhasil dengan benda-benda, jadi saya membuat fungsi jQuery baru untuk digunakan sebagai alternatif:jQuery.eachBack()
. Itu berulang seperti biasajQuery.each()
, dan menyimpan setiap kunci ke dalam array. Ini kemudian membalikkan array itu dan melakukan panggilan balik pada array / objek asli dalam urutan kunci terbalik.sumber
Saya pikir kamu perlu
sumber
Anda juga bisa mencoba
sumber