Saya baru mengenal jQuery dan menemukan beberapa pendekatan berbeda untuk ini secara online tetapi tidak ada yang berhasil untuk saya, jadi saya harap seseorang dapat membantu saya.

Saya memiliki sejumlah Pilihan. Masing-masing memiliki satu opsi dengan kelas "defaultSel" untuk menunjukkan bahwa ini harus dipilih sebagai default saat peristiwa tertentu dipicu.

Pendekatan saya adalah yang berikut ini yang mengubah nilai Selects tetapi saya tidak bisa membuatnya benar-benar memicu perubahan (tidak menambahkan .change() atau .trigger('change') tidak berfungsi untuk saya di sini). Juga, jika ada cara untuk menghindari .each di sini, beri tahu saya juga.

Jquery saya:

$(this).closest('div').nextAll('div.hiddenDiv').show().find('.defaultSel').each(function(){
    $(this).prop('selected', true).change();
});

Banyak terima kasih sebelumnya atas bantuan apa pun, Mike

1
keewee279 29 Mei 2015, 17:56

1 menjawab

Jawaban Terbaik

Jika option Anda adalah masalah dengan kelas defaultSel maka ini akan berfungsi:

$(this).closest('div').nextAll('div.hiddenDiv').show().find('select:has(option.defaultSel)').each(function(){
    $(this).find('option.defaultSel').prop('selected', true).end().change();
});

Hanya mengubah dua hal di sini:

find('select:has(option.defaultSel)')

Akan mendapatkan set select yang sebenarnya Anda inginkan, dan

$(this).find('option.defaultSel').prop('selected', true).end().change();

this di sini adalah select jadi Anda perlu menemukan opsi default, lalu end() akan mengembalikan Anda ke select dan Anda dapat memicu change() di atasnya.

2
swornabsent 29 Mei 2015, 18:03
Ya, opsi memiliki kelas. Terima kasih banyak untuk ini - ini bekerja dengan fantastis! - Dan penjelasannya juga sangat membantu. Akan menerima secepat saya bisa. :)
 – 
keewee279
29 Mei 2015, 18:06