※ 認識DOM(四)

更新於 發佈於 閱讀時間約 1 分鐘

※ 說明事件委派 (Event Delegation) ,背後的運作機制。

網頁元素接收事件的順序,流程有兩種個方向的傳遞:

  • 由下而上的,稱為事件冒泡 (event bubbling)
  • 由上而下的,稱為事件捕獲 (event capturing)

※ 事件冒泡 Event Bubbling

事件冒泡指的是「從啟動事件的節點 (event.target) 開始,逐層往上傳遞」,直到整個網頁的根節點 document 為止。

例如在 Todo List 裡監聽刪除事件時,click 事件發生在刪除按鈕 i.delete 上,但由於事件為往上傳遞,因此 ul 也收到了 click 事件,因而啟動了監聽器裡的 handler。

raw-image

※ event.stopPropagation()

如果不希望某個事件在DOM樹中進一步傳播時,可以使用這個方法。例如,在一個位於某個父元素內的按鈕觸發事件時,如果不想讓這個事件影響到父元素,就可以使用 event.stopPropagation()。

※ 事件捕獲 Event Capturing

由上而下的傳遞則稱為「事件捕獲」(Event Capturing) 。

當你點擊某個元素時,瀏覽器會先從最高層開始 capturing,一路前往到事件 target,再向上 bubbling。由於元素之間有這樣的上下回報機制,我們的事件才能順利地動起來。

raw-image

※ 檢查事件是怎麼觸發的、又傳去了哪裡的工具

  • console.log(this)
  • console.log(event.target)
全端網頁開發專業知識分享
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
※ 好用的陣列迭代器:forEach forEach 的使用時機: 需要從頭到尾把陣列中的每一個元素都印出來 ,就適合使用 forEach 方法。 forEach 的必要參數是一個函式: forEach() 的功能是把陣列的每個元素都丟進某個函式執行一次,因此必要的參數是一個函式。 語法:
※ 查找 DOM 元素有兩種途徑: 直接選出一個節點 (select):要在樹狀結構裡查找資料,至少要先選出第一個元素。 從一個特定節點,查找到週邊的節點 :選出一個元素後,就可以順著結構找出父元素、子元素 、甚至同一層的兄弟元素,這種行為稱為「遍歷 (traverse)」。 ※ 選出特定 D
※ Javascript和HTML的關係 當我們輸入新的網址或按下重新整理時,從解析檔案到畫面顯示出來,瀏覽器會進行以下流程: 解析 HTML / CSS 檔案,建立物件模型: HTML → DOM (Document Object Model)。 CSS → CSSOM (CSS Obje
※ DOM是什麼? DOM 全名為 Document Object Model 中文翻譯為 文件物件模型,就是把一份 HTML 文件內的各個標籤,包括文字、圖片等等都定義成物件,而這些物件最終會形成一個樹狀結構。 就 Document Object Model 這個名字來說,其中 documen
※ 非同步概念總複習 為什麼要使用 Promise? 在 JavaScript 開發中,處理非同步操作是常見需求,涉及如文件讀寫、數據庫查詢或網路請求等耗時任務。傳統的回調方式可能導致代碼結構混亂,稱為「回調地獄」,難以維護和理解。 Promise 是解決這問題的方法。它是一個物件(objec
認識 async/await基本概念: async 的本質是 promise 的語法糖 ,只要 function 標記為 async,就表示裡頭可以撰寫 await 的同步語法,而 await 顧名思義就是「等待」,它會確保一個 promise 物件都解決 ( resolve ) 或出錯 ( re
※ 好用的陣列迭代器:forEach forEach 的使用時機: 需要從頭到尾把陣列中的每一個元素都印出來 ,就適合使用 forEach 方法。 forEach 的必要參數是一個函式: forEach() 的功能是把陣列的每個元素都丟進某個函式執行一次,因此必要的參數是一個函式。 語法:
※ 查找 DOM 元素有兩種途徑: 直接選出一個節點 (select):要在樹狀結構裡查找資料,至少要先選出第一個元素。 從一個特定節點,查找到週邊的節點 :選出一個元素後,就可以順著結構找出父元素、子元素 、甚至同一層的兄弟元素,這種行為稱為「遍歷 (traverse)」。 ※ 選出特定 D
※ Javascript和HTML的關係 當我們輸入新的網址或按下重新整理時,從解析檔案到畫面顯示出來,瀏覽器會進行以下流程: 解析 HTML / CSS 檔案,建立物件模型: HTML → DOM (Document Object Model)。 CSS → CSSOM (CSS Obje
※ DOM是什麼? DOM 全名為 Document Object Model 中文翻譯為 文件物件模型,就是把一份 HTML 文件內的各個標籤,包括文字、圖片等等都定義成物件,而這些物件最終會形成一個樹狀結構。 就 Document Object Model 這個名字來說,其中 documen
※ 非同步概念總複習 為什麼要使用 Promise? 在 JavaScript 開發中,處理非同步操作是常見需求,涉及如文件讀寫、數據庫查詢或網路請求等耗時任務。傳統的回調方式可能導致代碼結構混亂,稱為「回調地獄」,難以維護和理解。 Promise 是解決這問題的方法。它是一個物件(objec
認識 async/await基本概念: async 的本質是 promise 的語法糖 ,只要 function 標記為 async,就表示裡頭可以撰寫 await 的同步語法,而 await 顧名思義就是「等待」,它會確保一個 promise 物件都解決 ( resolve ) 或出錯 ( re
你可能也想看
Google News 追蹤
  前言部分講得很淺,現在我們來深入認識一下「劇情」是做什麼的。   ※為避免怕大家搞混,以下都將情節稱為「事件」,還請見諒。 ❈❈❈   一、角色有推展、有動作,而不單單只是一個畫面,沒有前後,沒頭沒尾。   二、一個事件扣著一個事件,而不是這個做完了就沒事,完全延宕。   三、每個事件
Thumbnail
社團招生活動怎麼規劃?招生時程怎麼安排?要如何掌握招生的風險控管?這篇彙整我過往的活動加上行銷的經歷,以電商的「行銷漏斗-曝光互動轉換」和「活動誘因公式」來規劃招生計畫。
凡是專案,就一定有啟動會議。 啟動會議最主要的目的是讓專案成員、利害關係人齊聚一堂、互相認識,瞭解專案的目標、工作大項、程和里程碑,最重要的是要爭取功能主管對專案的支持,能夠派出成員利用在原部門工作的時間來參與專案。 ERP專案的啟動會議有兩次。
  前言部分講得很淺,現在我們來深入認識一下「劇情」是做什麼的。   ※為避免怕大家搞混,以下都將情節稱為「事件」,還請見諒。 ❈❈❈   一、角色有推展、有動作,而不單單只是一個畫面,沒有前後,沒頭沒尾。   二、一個事件扣著一個事件,而不是這個做完了就沒事,完全延宕。   三、每個事件
Thumbnail
社團招生活動怎麼規劃?招生時程怎麼安排?要如何掌握招生的風險控管?這篇彙整我過往的活動加上行銷的經歷,以電商的「行銷漏斗-曝光互動轉換」和「活動誘因公式」來規劃招生計畫。
凡是專案,就一定有啟動會議。 啟動會議最主要的目的是讓專案成員、利害關係人齊聚一堂、互相認識,瞭解專案的目標、工作大項、程和里程碑,最重要的是要爭取功能主管對專案的支持,能夠派出成員利用在原部門工作的時間來參與專案。 ERP專案的啟動會議有兩次。