JavaScript 中的事件委派 event delegation
事件委派 event delegation
事件委派 event delegation 是一種 JavaScript Pattern,在父層 DOM 元素上只要綁定一個監聽器,底下的子元素就看透過**事件冒泡(Event Bubbling)**機制觸發父層的監聽器,如此一來就不需要在每一個子元素上綁定個監聽器,只要在其共同的父元素上綁定一個即可。
優點:
- 節省記憶體:監聽器數量變少,也就可以提升效能。
- 提高程式碼維護性:處理事件的邏輯只需要在父元素的監聽器寫一次。
- 可以支援動態元素:可以動態的調整增加子元素,不需要額外的力氣處理綁定或移除子元素上的監聽器。
<ul id="devices">
<li>iPhone 16</li>
<li>S24 Ultra</li>
<li>Pixel 9 Pro XL</li>
</ul>
<script>
const devices = document.getElementById("devices");
devices.addEventListener("click", function (event) {
if (event.target.tagName === "LI") {
console.log(event.target.innerText);
}
});
</script>