Bagaimana cara mendapatkan $ (ini) opsi yang dipilih di jQuery?


92

Kode berikut berfungsi:

$("#select-id").change(function(){
  var cur_value = $('#select-id option:selected').text();
  . . .
});

Cara merefaktor baris kedua menjadi:

var cur_value = $(this).***option-selected***.text();

Apa yang Anda gunakan ***option-selected***?

Jawaban:


121

Untuk nilai yang dipilih: $(this).val()

Jika Anda membutuhkan elemen opsi yang dipilih, $("option:selected", this)


106
 $(this).find('option:selected').text();

Ini bekerja dengan sempurna untuk saya - Saya mencoba $("option:selected", this)seperti yang disebutkan di atas tetapi itu bermasalah. Saya menggunakan klik tombol untuk menambahkan teks elemen opsi yang dipilih ke div lain, tetapi ketika saya mengklik tombol, itu benar-benar mengubah elemen yang dipilih ... aneh. Gunakan yang ini.
skwidbreth

53

Cara terbaik dan terpendek menurut saya untuk acara onchange di dropdown untuk mendapatkan opsi yang dipilih:

$('option:selected',this);

untuk mendapatkan atribut nilai:

$('option:selected',this).attr('value');

untuk mendapatkan bagian yang ditampilkan di antara tag:

$('option:selected',this).text();

Dalam sampel Anda:

$("#select-id").change(function(){
  var cur_value = $('option:selected',this).text();
});

Jangan gunakan .context, ini sudah tidak digunakan lagi sejak jQuery 1.10 - api.jquery.com/category/deprecated/deprecated-1.10
rafx

Ya, tapi yang Anda maksud adalah ini: api.jquery.com/context $ ("ul", document.body) .context.nodeName yang tidak saya gunakan
angelmedia

1
Saya suka jawabannya, tetapi mengapa yang terbaik?
Sébastien Gicquel

40
var cur_value = $('option:selected',this).text();

Meskipun ini secara teoritis dapat menjawab pertanyaan, akan lebih baik jika menyertakan bagian penting dari jawaban di sini, dan menyediakan tautan untuk referensi.
Enamul Hassan


9

Anda dapat menggunakan finduntuk mencari opsi terpilih yang merupakan turunan dari node yang ditunjukkan oleh objek jQuery saat ini:

var cur_value = $(this).find('option:selected').text();

Karena ini kemungkinan besar merupakan anak langsung, saya sebenarnya menyarankan untuk menggunakan .childrensebagai gantinya:

var cur_value = $(this).children('option:selected').text();

7
var cur_value = $(this).find('option:selected').text();

Karena optionkemungkinan anak langsung selectAnda juga dapat menggunakan:

var cur_value = $(this).children('option:selected').text();

http://api.jquery.com/find/


Di mana Anda mendapatkan option-selectedtanpa kutipan ...?
Platinum Azure

Itu salah ketik ketika saya memposting. Memperbaiki jawabannya.
thomthom

find('option:selected')mengembalikan string kosong untuk saya. Versi jQuery apa yang dibutuhkan? Saya bekerja di 1.6.1. children('option:selected')berhasil.
B Tujuh

option:selectedtelah ada sejak v1.0 api.jquery.com/selected-selector
thomthom

0

Tamu terbaik:

var cur_value = $('#select-id').children('option:selected').text();

Saya lebih menyukai anak-anak dalam hal ini karena Anda tahu Anda hanya akan turun satu cabang di pohon DOM ...


Mungkin yang Anda maksud sebenarnya adalah var cur_value = $ (this) .children ('option: selected'). Text ();
Joe Johnston

0

Hanya saja

$(this).val();

Saya pikir jQuery cukup pintar untuk mengetahui apa yang Anda butuhkan

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.