回覆列表
-
1 # 小碼農大世界
-
2 # coder分享
針對事件捕獲和事件冒泡,我已經寫了一篇文章有具體講到《JS事件流與DOM事件處理程式》,文章連結:https://www.toutiao.com/i6392562710684369410/,感興趣的可以直接去看看。
這裡在簡單的講述下,事件流的相關知識。
事件流事件流可以理解為事件在頁面的DOM節點之間傳播的順序,主要分為三個過程,分別是:事件捕獲階段 --> 事件目標階段 --> 事件冒泡階段,從下圖可以看出事件的傳播過程。
事件捕獲
事件捕獲的思想是頁面上最外層的節點先接收事件,然後向內層元素逐級傳播。例如上面的例子中,事件捕獲階段的傳播順序為:window --> document --> html --> body --> table --> tbody --> tr --> td
事件冒泡
事件冒泡和事件捕獲剛好相反,它的思想是讓最內層節點先接收事件,然後向外層逐級傳播。上面的例子中,事件冒泡階段傳播順序為:td --> tr --> tbody --> table --> body --> html --> document --> window
事件目標階段
不管在事件傳播階段還是在事件冒泡階段,都必然經歷事件目標階段,表示對DOM節點的事件進行處理。
Js事件傳播階段分為
第一階段:從window傳遞到目標節點稱為捕獲階段
第二階段:在目標節點觸發稱為目標階段
第三階段:從目標節點傳回window物件,稱為冒泡階段
具體例子說明講解可以點我頭像檢視我寫的一篇文章<5分鐘瞭解js事件機制>