Rumah > hujung hadapan web > tutorial js > Mengapa jQuery Saya Tidak `on('change')` Berfungsi pada Dropdown Ditambah Secara Dinamik?

Mengapa jQuery Saya Tidak `on('change')` Berfungsi pada Dropdown Ditambah Secara Dinamik?

Barbara Streisand
Lepaskan: 2024-12-15 13:43:12
asal
378 orang telah melayarinya

Why Doesn't My jQuery `on('change')` Work on Dynamically Added Dropdowns?

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());
});
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan