Kode berikut mengembalikan 'tidak terdefinisi' ...
$('select').change(function(){
alert($(this).data('id'));
});
<select>
<option data-id="1">one</option>
<option data-id="2">two</option>
<option data-id="3">three</option>
</select>
Jawaban:
Anda perlu menemukan opsi yang dipilih:
atau
meskipun metode pertama lebih disukai.
sumber
Coba yang berikut ini:
Pelanggan perubahan Anda berlangganan acara perubahan pilihan, jadi
this
parameternya adalah elemen pilih. Anda perlu menemukan anak yang dipilih untuk mendapatkan data-id dari.sumber
find()
jauh lebih cepat daripadachildren()
dalam kasus seperti ini di mana kita hanya memiliki kedalaman 2 pohon.sumber
Vanilla Javascript:
sumber
Anda dapat menggunakan
context
sintaks denganthis
atau$(this)
. Ini adalah efek yang sama denganfind()
.Sebagai masalah optimasi mikro, Anda mungkin memilih
find()
. Jika Anda lebih suka pegolf kode, sintaks konteksnya lebih singkat. Itu datang ke gaya coding pada dasarnya.Berikut ini adalah perbandingan kinerja yang relevan .
sumber
sumber
id
atribut pada elemen pilih (dan tidak memerlukannya karena utilitasthis
).ini bekerja untuk saya
dan skripnya
sumber