Delegasi acara ialah teknik lanjutan yang menjadikan pengendalian acara DOM dalam JavaScript lebih cekap dan mudah. Biasanya, apabila kami melampirkan pengendali acara, ia dikaitkan secara langsung dengan elemen DOM tertentu. Tetapi apabila terdapat banyak elemen kanak-kanak, melampirkan pengendali acara berasingan untuk setiap satu adalah tidak perlu dan tidak cekap memori. Di sinilah delegasi acara berguna.
Delegasi acara pada asasnya berfungsi berdasarkan mekanisme "Event Bubbling". Melalui mekanisme ini acara merambat ke atas daripada sasaran yang dimaksudkan (kepada elemen induk) sehingga ia mencapai dokumen.
Acara menggelegak ialah proses di mana acara bermula dari elemen sasaran paling dalam dan secara beransur-ansur mencapai elemen induknya. Katakan, anda mengklik Menggunakan delegasi acara, kami melampirkan pendengar acara pada elemen induk dan juga boleh mengendalikan acara daripada elemen kanak-kanak melalui acara menggelegak. Mengendalikan acara klik pada senarai ringkas Andaikan, saya mempunyai senarai yang mengandungi banyak item li. Mengklik pada setiap item li akan memaparkan mesej. Dalam kod ini, pendengar acara hanya ditambahkan pada elemen ul. Setiap kali elemen li diklik, acara itu akan muncul dalam ul, dan kami akan mengetahui dari event.target bahawa klik itu berlaku pada elemen li yang mana. ধরা যাক, উপরের উদাহরণে আমরা DOM-এ নতুন li item যোগ করব এবং তাদের ক্লিক ইভেন্ট হ্যান্ডল করব। এখানে, আমরা একটি নতুন li item যোগ করার জন্য একটি বাটন যুক্ত করেছি। যখনই একটি নতুন item যোগ করা হবে, সেই item-এ ক্লিক করলে ul element-এ অ্যাটাচ করা ইভেন্ট লিসেনার তার ক্লিক ইভেন্টটি হ্যান্ডল করবে, এবং একটি মেসেজ দেখাবে। ইভেন্ট ডেলিগেশন ছাড়া একই কাজ করা হলে কী সমস্যা হতো? এই কোডে, প্রত্যেকটি li item-এ আলাদাভাবে ইভেন্ট লিসেনার যোগ করা হচ্ছে। কিন্তু এই পদ্ধতি বেশি মেমোরি ব্যবহার করে এবং যদি নতুন li item যোগ করা হয়, তখন সেই item-এ আলাদাভাবে ইভেন্ট লিসেনার অ্যাটাচ করতে হবে। ইভেন্ট ডেলিগেশন এই সমস্যাগুলো দূর করতে পারে। ইভেন্ট ডেলিগেশন একটি শক্তিশালী এবং কার্যকর টেকনিক যা আপনাকে জাভাস্ক্রিপ্টে DOM ইভেন্ট ম্যানেজমেন্টের ক্ষেত্রে সহজ, পরিষ্কার, এবং মেমোরি সাশ্রয়ী কোড লিখতে সাহায্য করে। এটি parent elements-এর ইভেন্ট লিসেনার ব্যবহার করে child elements-এর ইভেন্টগুলোকে হ্যান্ডল করার মাধ্যমে ডাইনামিক কনটেন্ট ম্যানেজমেন্টকেও সহজ করে তোলে। Atas ialah kandungan terperinci Perbincangan terperinci tentang Delegasi Acara JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!
Bagaimanakah delegasi acara berfungsi?
Contohnya:
htmlCopy code
<ul id="my-list">
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
<script>
const myList = document.getElementById('my-list');
// ইভেন্ট ডেলিগেশন ব্যবহার করে parent <ul> element-এ ইভেন্ট লিসেনার যোগ করা হলো
myList.addEventListener('click', (e)=> {
e.preventDefault();
// নিশ্চিত করা হচ্ছে যে ক্লিকটি <li> element এ হয়েছে
if (event.target.tagName === 'LI') {
alert('You clicked on ' + event.target.textContent);
}
});
</script>
ইভেন্ট ডেলিগেশন কেন প্রয়োজন?
htmlCopy code
<button id="add-item">Add Item</button>
<ul id="my-list">
<li>Item 1</li>
<li>Item 2</li>
</ul>
<script>
const myList = document.getElementById('my-list');
const addItemButton = document.getElementById('add-item');
let itemCount = 2;
addItemButton.addEventListener('click', (e)=>{
e.preventDefault();
itemCount++;
const newItem = document.createElement('li');
newItem.textContent = 'Item ' + itemCount;
myList.appendChild(newItem);
});
myList.addEventListener('click', function(event) {
if (event.target.tagName === 'LI') {
alert('You clicked on ' + event.target.textContent);
}
});
</script>
htmlCopy code
<ul id="my-list">
<li>Item 1</li>
<li>Item 2</li>
</ul>
<script>
// প্রত্যেকটি <li> element এ আলাদাভাবে ইভেন্ট লিসেনার যোগ করা হচ্ছে
const items = document.querySelectorAll('#my-list li');
items.forEach(function(item) {
item.addEventListener('click', function() {
alert('You clicked on ' + item.textContent);
});
});
</script>
উপসংহার