Bagaimana melakukan ini menggunakan jQuery - document.getElementById ("selectlist")

141

Di jQuery, apa yang setara dengan itu document.getElementById("selectlist").value?

Saya mencoba untuk mendapatkan nilai dari item daftar pilih.

Terima kasih.

tonyf
sumber
10
Anda kemungkinan akan menerima downvotes karena pertanyaan Anda dapat dijawab hanya dalam beberapa detik di Google, atau dengan membaca dokumen JQuery.
zombat
53
+1 hingga amandel untuk menantang pengguna SO. Pertanyaannya adalah pertanyaan yang benar-benar valid, terlepas dari seberapa mudah / sulitnya untuk menyelesaikannya. Lebih banyak lalu lintas ke SO untuk pencarian di masa mendatang tentang subjek ini.
Tn. Smith
7
ayolah guys - jQuery voodoo tidak semudah itu dipelajari untuk orang tua seperti saya, server dev yang telah saya kunjungi selama 20 tahun terakhir - bersikap baik dan bersikap mudah pada kami pendatang baru jQuery! :-)
marc_s
1
@Boekwurm Ben - dia mungkin berani, tetapi Anda tidak bisa menyalahkan pengguna SO juga. Orang-orang biasanya senang melihat sedikit usaha dari orang yang mengajukan pertanyaan.
zombat
12
Seingat saya, ini adalah hal pertama yang saya tidak dapatkan tentang jQuery. Saya pikir ini pertanyaan yang valid jika kebenaran disampaikan, dan menandai itu keras. stackoverflow.com/questions/75296/…
James Wiseman

Jawaban:

148
$('#selectlist').val();
Kekacauan Kekacauan
sumber
1
Wah Anda mendapat jackpot LOL.
Jacob Relkin
214

"Setara" adalah kata di sini

Sementara...

$('#selectlist').val();

... setara dengan ...

document.getElementById("selectlist").value

... perlu dicatat bahwa ...

$('#selectlist')

... meskipun 'setara' tidak sama dengan ...

document.getElementById("selectlist")

... karena mantan mengembalikan objek jQuery, bukan objek DOM.

Untuk mendapatkan objek DOM dari jQuery, gunakan yang berikut ini:

$('#selectlist').get(); //get all DOM objects in the jQuery collection
$('#selectlist').get(0); //get the DOM object in the jQuery collection at index 0
$('#selectlist')[0]; //get the DOM objects in the jQuery collection at index 0
James Wiseman
sumber
1
mungkin sedikit tangensial di sini, tapi ini akan menjadi info hebat: apakah ada cara untuk mendapatkan objek DOM dari jQuery? sunting : menjawab pertanyaan saya sendiri di sunting.
Clayton Hughes
4
Saya memukul kepala saya ke dinding selama satu jam sampai saya menyadari bahwa getElementById () tidak dapat diganti dengan $ (). Terima kasih banyak atas jawaban ini!
knite
3
@knite - Ya. Saya berharap ada seseorang yang menjelaskannya kepada saya saat pertama kali saya menggunakan jQuery.
James Wiseman
1
terima kasih untuk penjelasan bagian selanjutnya dari mendapatkan objek DOM di jquery :).
kailash19
+1 Oldie tapi goodie. Saya mencoba mencari tahu mengapa Google Maps menerima objek DOM tetapi tidak menerima objek jQuery saya. Pencarian google cepat membawa saya ke sini, bukan ke jQuery docs.
TonyG
9

Kekacauan sangat tepat, meskipun untuk pertanyaan-pertanyaan semacam ini Anda harus memeriksa Dokumentasi Jquery online - itu benar-benar sangat komprehensif. Fitur yang Anda cari disebut 'penyeleksi jquery'

Umumnya Anda lakukan $('#ID').val()-. Yang selanjutnya dapat melakukan sejumlah hal pada elemen yang dikembalikan dari pemilih. Anda juga dapat memilih semua elemen pada kelas tertentu dan melakukan sesuatu untuk masing-masingnya. Lihatlah dokumentasi untuk beberapa contoh yang bagus.

RodH257
sumber
9

Itu dapat dilakukan dengan tiga cara berbeda, meskipun semuanya hampir sama

Cara Javascript

document.getElementById('test').value

Cara jquery

$("#test").val()          

$("#test")[0].value             

$("#test").get(0).value
sayannaya
sumber
Ini jawaban terbaik. Terima kasih!
Carter Medlin
2

Bagi mereka yang bertanya-tanya apakah pemilih jQuery id lebih lambat daripada document.getElementById, jawabannya adalah ya, tetapi bukan karena prasangka bahwa ia menelusuri seluruh DOM mencari elemen. jQuery sebenarnya menggunakan metode asli. Sebenarnya karena jQuery menggunakan ekspresi reguler terlebih dahulu untuk memisahkan string dalam pemilih untuk diperiksa, dan tentu saja menjalankan konstruktor:

rquickExpr = /^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/

Sedangkan menggunakan elemen DOM sebagai argumen segera kembali dengan 'ini'.

Jadi ini:

$(document.getElementById('blah')).doSomething();

Akan selalu lebih cepat dari ini:

$('#blah').doSomething();
markyzm
sumber
0

Dalam beberapa kasus yang saya tidak ingat mengapa tetapi $('#selectlist').val()tidak selalu mengembalikan nilai item yang benar, jadi saya gunakan $('#selectlist option:selected').val()sebagai gantinya.

Brett Ryan
sumber
Mungkin Anda dapat memposting beberapa tautan kembali yang mengonfirmasi hal ini. Namun saya akan terkejut. Ini akan menjadi bug mendasar di jQuery. Apakah mungkin Anda menggunakan perpustakaan versi kereta?
James Wiseman
Bisa jadi James, saya pikir itu bisa di 1.3.0, sepertinya tidak bisa repro di 1.3.2, tetapi bisa juga di IE6 atau 7 yang saya tidak menginstal lagi, saya akan melihat jika saya dapat mengetahui penyebab asli dan melaporkannya di sini.
Brett Ryan