Rumah >hujung hadapan web >tutorial js >Mengapa jQuery Saya Tidak `on('change')` Berfungsi pada Dropdown Ditambah Secara Dinamik?
Mentransisikan live() jQuery kepada on(): What Went Wrong?
Dalam jQuery, kaedah live() telah digantikan dengan on() untuk pengendalian acara. Walau bagaimanapun, walaupun berhijrah ke jQuery 1.7 dan menggunakan on('change') untuk mengesan perubahan dalam Dropdown yang ditambah secara dinamik, pengendali acara kekal tidak aktif.
Penyelesaian
The perbezaan utama terletak pada cara on() mengendalikan delegasi acara. Tidak seperti live(), yang melampirkan pengendali acara pada elemen yang dicipta secara dinamik, on() mengikat pengendali hanya pada elemen yang wujud pada masa penyeruannya.
Untuk mencapai kefungsian yang sama seperti live(), on( ) sintaks hendaklah diubah suai seperti berikut:
$(document.body).on('change', 'select[name^="income_type_"]', function() { alert($(this).val()); });
Ini mengikat pengendali peristiwa ke badan dokumen, yang memastikan pengendali dilampirkan walaupun untuk elemen ditambah secara dinamik.
Sebagai alternatif, untuk pengendalian acara yang lebih disasarkan, pertimbangkan untuk melampirkan pengendali pada elemen nenek moyang yang paling hampir.
Dokumentasi jQuery secara eksplisit menyatakan bahawa on() berkelakuan berbeza daripada pendahulunya, menekankan bahawa pengendali acara hanya terikat dengan elemen sedia ada. Ini menerangkan sebab pelaksanaan awal dengan on('change') tidak dicetuskan.
Atas ialah kandungan terperinci Mengapa jQuery Saya Tidak `on('change')` Berfungsi pada Dropdown Ditambah Secara Dinamik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!