Bagaimana cara mendapatkan elemen pertama daripada menggunakan [0] di jQuery?

95

Saya baru mengenal jQuery, maaf jika ini adalah pertanyaan konyol.

Ketika saya menggunakannya, temukan elemen menggunakan id, saya tahu selalu ada satu kecocokan dan untuk mengaksesnya saya akan menggunakan indeks [0]. Apakah ada cara yang lebih baik untuk melakukan ini? Misalnya

var gridHeader = $("#grid_GridHeader")[0];
Ruban
sumber

Jawaban:

101

Anda juga dapat menggunakan .get(0)tetapi ... Anda tidak perlu melakukannya dengan elemen yang ditemukan oleh ID, yang harus selalu unik. Saya berharap ini hanya contoh kekeliruan ... jika ini yang terjadi di halaman Anda yang sebenarnya, Anda harus memperbaikinya sehingga ID Anda unik, dan gunakan kelas (atau atribut lain) sebagai gantinya.

.get()(like [0]) dapatkan elemen DOM, jika Anda ingin menggunakan objek jQuery .eq(0)atau .first()sebagai gantinya :)

Nick Craver
sumber
17
Kecuali itu$("#id") /* jQuery object */ != $("#id").get(0) /* DOM Object */
BrunoLM
9
@BrunoLM - Jika Anda menginginkan elemen DOM document.getElementById('id'), jangan membuat objek jQuery hanya untuk membuangnya ... itu sangat boros, dari mesin pemilih hingga pembungkus objek, itu hanya berlebihan tanpa alasan yang baik :)
Nick Craver
Nick Saya setuju, mungkin saya agak konyol hanya menggunakan jquery untuk segalanya.
Ruban
2
@NickCraver - Terima kasih untuk itu. Saya baru saja mengganti banyak document.getElementById('id')dengan $('#id')[0]tetapi tidak suka [0]. Komentar Anda tentang pemborosan membuat saya berpikir untuk mendefinisikan $0 = function(id){return document.getElementById(id);}dan sekarang saya $0('id')lebih suka . Jumlah karakter yang sama seperti $('#id'), saya hanya berharap bisa$#('id')
Bruno Bronosky
2
Berharap ada varian dari metode ini yang mengembalikan nilai salah dari kumpulan hasil kosong.
Stephen M. Harris
27

$("#grid_GridHeader:first") bekerja dengan baik.

Mervyn
sumber
3
Saya pikir ini adalah cara terbaik untuk menangani masalah Anda di sini. Bacaannya bagus, berbeda dengan .eq (0)
Dave Gregory
Ini adalah cara terbaik untuk alasan kinerja juga (misalnya ketika Anda memiliki tabel dengan 1000 baris, tidak perlu membuat objek jquery dari semuanya)
Alex
18

Anda dapat menggunakan metode pertama:

$('li').first()

http://api.jquery.com/first/

btw Saya setuju dengan Nick Craver - gunakan document.getElementById () ...

Bennidhamma
sumber
1
Ini mengembalikan array kosong jika tidak ada elemen yang ditemukan. Hati-hati menggunakan pernyataan logika seperti yang []akan mengevaluasi true.
Ashley
4

Dengan asumsi hanya ada satu elemen:

 $("#grid_GridHeader")[0]
 $("#grid_GridHeader").get(0)
 $("#grid_GridHeader").get()

... semuanya setara, mengembalikan satu elemen yang mendasari.

Dari kode sumber jQuery, Anda dapat melihat bahwa get(0), di bawah sampul, pada dasarnya melakukan hal yang sama dengan [0]pendekatan:

 // Return just the object
 ( num < 0 ? this.slice(num)[ 0 ] : this[ num ] );
Ken Redler
sumber
Terima kasih untuk semua yang lain bekerja selain dari get () yang sepertinya tidak mendapatkan item pertama.
Ruban
Sebenarnya saya bisa melihat dari jawaban Nick Crave mengapa itu tidak berhasil
Rubans
3

Anda dapat menggunakan pemilih pertama.

var header = $('.header:first')
Matt
sumber
Mengembalikan larik dengan satu elemen.
Nitin
-3

Anda bisa mencoba seperti ini:
yourArray.shift()

hjijin
sumber