在講事件代理前,要先講講什麼叫做「事件」。
事件
所謂的「事件」,是指使用者在操作網頁時所做的動作,像是「點擊」按鈕、「滾動」網頁、「送出」表單,這些都是一個個「事件」。
可以從這裡看到更多關於事件的介紹!
事件監聽
程式碼在監聽到「某個元素被觸發某個動作」後,去執行一些動作,而監聽有兩種方法:
- on-event
$('元素名稱').on('事件', function () {
//觸發後要做的動作
})
- addEventListener
var el = document.querySelector('元素名稱')
el.addEventListener(
'click',
function (e) {
//觸發後要做的動作
},
false
)
事件傳遞:捕獲、目標、冒泡
這個部分會經過三個階段,也就是小標寫的那三個。
- 捕獲階段(Capture Phase):當一個事件發生時,會依序由最外層的
window
開始依序由外向內傳遞事件,一直往目標元素傳遞 - 目標階段(Target Phase):到達事件目標了,會依照註冊順序觸發事件監聽。
- 冒泡階段(Bubbling Phase):最後一步,由事件目標依序向外傳遞,過程中觸發個別元素的冒泡階段事件監聽。
參考來源: