Navigate back to the homepage

什麼是事件委託(Event Delegation)

JavaScript
November 18th, 2021 · 1 min read

事件委託,就是利用冒泡原理,把事件監聽器委託給父層,觸發執行。

不用每個子元素都單獨設定事件監聽器。在觸發子元素時,事件會冒泡到父層,父層監聽器就會觸發。

優點是:

  1. 減少監聽器的數量,提高效能,因為只需要綁定在父元素上。
  2. 對於新增或刪除的子元素也不需再額外設定事件監聽器。

缺點是:

  1. 需要判斷哪些子元素是我們要執行的項目

程式 demo

1<div id="container">
2 <div class="card">
3 <h2>Card 1</h2>
4 <p>Lorem ipsum dolor sit amet.</p>
5 <button class="remove_btn">delete</button>
6 </div>
7 <div class="card">
8 <h2>Card 2</h2>
9 <p>Lorem ipsum dolor sit amet.</p>
10 <button class="remove_btn">delete</button>
11 </div>
12 <div class="card">
13 <h2>Card 3</h2>
14 <p>Lorem ipsum dolor sit amet.</p>
15 <button class="remove_btn">delete</button>
16 </div>
17</div>
1document.getElementById("container").addEventListener("click", (event) => {
2 const target = event.target;
3
4 if (target.className === "remove_btn") {
5 target.closest(".card").remove();
6 }
7});

如上圖,我們要的效果就是刪除 card。應用事件委託的方法就是,將click事件綁定在父層 container 上, 在點擊子層 remove_btn 時,藉由冒泡到父層執行程式。過程中就需要判斷如果 class name 是 remove_btn ,才將離該元素最近的父層card刪除。


參考資料

More articles from Iris Blog

CSS 選擇器的優先權順序

在相同選擇器下,後者敘述優先於前者。 在不同選取器下, 權重依輕到重: Tag 選取器 (如: span 、 h1 、 p )、 伪元素 (如: ::before 、 ::after ) Class 選取器 (如: .container 、 .wrap…

November 17th, 2021 · 1 min read

DOCTYPE 是什麼

在 HTML 文件一開始第一行我們都要寫上 DOCTYPE

November 16th, 2021 · 1 min read
© 2020–2021 Iris Blog
Link to $mailto:qweichew@gmail.comLink to $https://github.com/iris1114Link to $https://www.instagram.com/iris.justdoit/Link to $https://www.linkedin.com/in/iris-chew