Penyebaran acara dalam JavaScript menerangkan cara peristiwa mengalir melalui DOM selepas dicetuskan. Terdapat dua fasa utama: Event Bubbling dan Event Capturing. Memahami konsep ini adalah penting untuk mengurus pendengar acara dengan berkesan.
Apabila peristiwa dicetuskan, ia merambat melalui DOM dalam susunan berikut:
Dalam fasa menggelegak, acara bermula pada elemen sasaran dan berbuih melalui nenek moyangnya.
<div> <pre class="brush:php;toolbar:false">document.getElementById("parent").addEventListener("click", function() { console.log("Parent clicked"); }); document.getElementById("child").addEventListener("click", function() { console.log("Child clicked"); });
Output apabila mengklik butang:
Child clicked Parent clicked
Gunakan kaedah stopPropagation() untuk menghalang acara daripada disebarkan lebih jauh.
document.getElementById("child").addEventListener("click", function(event) { event.stopPropagation(); console.log("Child clicked"); });
Dalam fasa menangkap, acara bergerak dari akar pokok DOM turun ke elemen sasaran.
document.getElementById("parent").addEventListener( "click", function() { console.log("Parent clicked"); }, true // Enables capturing phase ); document.getElementById("child").addEventListener("click", function() { console.log("Child clicked"); });
Output apabila mengklik butang:
Parent clicked Child clicked
Feature | Event Bubbling | Event Capturing |
---|---|---|
Order | From target to ancestors | From root to target |
Default Behavior | Enabled | Disabled unless specified |
Use Case | Commonly used for delegation | Less commonly used |
Delegasi acara memanfaatkan acara menggelegak untuk mengendalikan acara dengan cekap untuk berbilang elemen kanak-kanak.
<div> <pre class="brush:php;toolbar:false">document.getElementById("parent").addEventListener("click", function() { console.log("Parent clicked"); }); document.getElementById("child").addEventListener("click", function() { console.log("Child clicked"); });
Gunakan kaedah preventDefault() untuk menghentikan gelagat lalai sesuatu elemen tanpa menjejaskan penyebaran.
Child clicked Parent clicked
document.getElementById("child").addEventListener("click", function(event) { event.stopPropagation(); console.log("Child clicked"); });
Menguasai acara menggelegak dan menangkap memastikan kawalan yang lebih baik ke atas aplikasi dipacu peristiwa dan meningkatkan kecekapan kod.
Hai, saya Abhay Singh Kathayat!
Saya seorang pembangun timbunan penuh dengan kepakaran dalam kedua-dua teknologi hadapan dan belakang. Saya bekerja dengan pelbagai bahasa pengaturcaraan dan rangka kerja untuk membina aplikasi yang cekap, berskala dan mesra pengguna.
Jangan ragu untuk menghubungi saya melalui e-mel perniagaan saya: kaashshorts28@gmail.com.
Atas ialah kandungan terperinci Menguasai Acara Bubbling dan Tangkapan dalam JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!