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.

Omiod
sumber

Jawaban:

378

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

$("a").slice(0,20)
ramah
sumber
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
92

Gunakan pemilih palsu:

$("a:lt(n)")

Ini cocok dengan elemen sebelum yang ke-n (elemen ke-n dikecualikan). Penomoran dimulai dari 0.

kgiannakakis
sumber
13
Menurut jQuery Documents , .slice lebih cepat di browser modern.
Blaise
1
Saya suka menggunakan gaya jQuery, ini lebih elegan, daripada rantai.
Fedir RYKHTIK
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.

Arlind Nushi
sumber
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.

Kevin Gwynn
sumber