Rumah > hujung hadapan web > tutorial js > Dua kaedah untuk menyelesaikan masalah yang nod elemen ditambah secara dinamik tidak boleh mencetuskan peristiwa dalam jquery_jquery

Dua kaedah untuk menyelesaikan masalah yang nod elemen ditambah secara dinamik tidak boleh mencetuskan peristiwa dalam jquery_jquery

WBOY
Lepaskan: 2016-05-16 15:34:27
asal
1360 orang telah melayarinya

Contohnya, semasa membuat ajax untuk membaca senarai mesej, terdapat butang balas di belakang setiap mesej dengan kelas "balas" Jika anda menggunakan $(".reply").click(function(){ // lakukan sesuatu... }), mungkin peristiwa klik butang balas dalam senarai yang dimuatkan kemudian melalui ajax akan menjadi tidak sah.

SebenarnyaCara paling mudah ialah dengan menulis onclick="" terus dalam teg, tetapi menulis dengan cara ini sebenarnya agak rendah nama kelas Tetapkan acara klik.

Terdapat dua penyelesaian kepada masalah yang menambahkan nod elemen secara dinamik dalam jquery tidak boleh mencetuskan peristiwa , seperti berikut:

Untuk mencapai kesan tunjuk cara yang lebih baik, anggap bahawa terdapat kod dengan struktur berikut di bawah kandungan halaman:

<p id="pLabel">新加一条</p>
<ul id="ulLabel">
 <li class="liLabel">aaa1</li>
 <li class="liLabel">aaa2</li>
 <li class="liLabel">aaa3</li>
</ul>
<script type="text/javascript">
$("#pLabel").click(function(){
 $("#ulLabel").append('<li class="liLabel">aaaQ</li>'); //动态像ul的末尾追加一个新元素
});
</script>
Salin selepas log masuk

Kaedah 1: Gunakan secara langsung

Fungsi

live() akan mengikat satu atau lebih pengendali acara pada elemen yang dipilih dan menentukan fungsi untuk dijalankan apabila peristiwa ini berlaku. Fungsi live() digunakan pada elemen semasa dan masa hadapan yang sepadan dengan pemilih. Sebagai contoh, elemen dicipta secara dinamik melalui skrip.

Pelaksanaannya adalah seperti berikut:

$('.liLabel').live('click', function(){
 alert('OK');
});
Salin selepas log masuk

Kaedah 2: Gunakan pada

Anda boleh mengikat acara melalui kaedah on, yang boleh diikat kepada induk atau badannya. Pelaksanaannya adalah seperti berikut:

$("#ulLabel").on('click','.liLabel',function(){
 alert('OK')
});
或者:
$("body").on('click','.liLabel',function(){
 alert('OK')
});
Salin selepas log masuk

Sekarang anda boleh mencubanya untuk melihat sama ada masalah telah diselesaikan Saya harap artikel ini benar-benar dapat membantu anda.

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan