Memilih item ā€œnā€ pertama dengan jQuery


217

Dengan Jquery, saya perlu memilih item "n" pertama dari halaman, misalnya 20 tautan pertama alih-alih memilih semuanya dengan yang biasa

$("a")

Kedengarannya sederhana tetapi manual jQuery tidak memiliki bukti seperti ini.

Jawaban:


378

Anda mungkin ingin membaca tentang slice . Kode Anda akan terlihat seperti ini:

$("a").slice(0,20)

65
Meskipun :lt(20)pendekatannya terlihat jauh lebih bersih, menggunakan slice jauh lebih efisien jika Anda memiliki hasil yang besar untuk memulai. Sayangnya, ketika mengevaluasi ": lt" dan penyeleksi posisi lainnya, jQuery mengulangi seluruh set , bahkan jika itu hanya mendapatkan elemen pertama. Saya telah menulis lebih banyak tentang ini di blog saya di sini: spadgos.com/?p=51
nickf

1
Terima kasih, persyaratan tambahan dari permintaan saya adalah tentang pertunjukan, jadi ini jawaban yang tepat untuk saya. Terima kasih kepada yang lain untuk menunjukkan: pemilih juga.
Omiod

3
Komentar informatif oleh @nickf, tetapi tautan blog dan tautan grafik sepertinya tidak berfungsi
Fractalf

1
Tidak dapat mengedit sekarang maaf - pada dasarnya, menggunakan slice jauh lebih cepat.
nickf


22

Saya menemukan catatan ini di akhir dokumen lt () :

Catatan Tambahan:
Karena: lt () adalah ekstensi jQuery dan bukan bagian dari spesifikasi CSS, kueri yang menggunakan: lt () tidak dapat memanfaatkan peningkatan kinerja yang disediakan oleh metode DOM querySelectorAll () asli. Untuk kinerja yang lebih baik di browser modern, gunakan $ ("your-pure-css-selector"). Slice (0, index) sebagai gantinya.

Jadi gunakan $("selector").slice(from, to)untuk penampilan yang lebih baik.



7

.slice () tidak selalu lebih baik. Dalam kasus saya, dengan jQuery 1.7 di Chrome 36, .slice (0, 20) gagal dengan kesalahan:

RangeError: Ukuran tumpukan panggilan maksimum terlampaui

Saya menemukan bahwa: lt (20) berfungsi tanpa kesalahan dalam kasus ini. Saya mungkin memiliki puluhan ribu elemen yang cocok.


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.