一、js的事件傳遞流程
js的事件傳遞流程有兩個階段第一個是事件捕獲階段,第二個是事件冒泡階段
事件捕獲階段是從上到下傳遞事件,事件冒泡階段是從下到上傳遞事件。
可以使用addEventListener第三個參數傳入true就可鑑別到事件捕獲階段
domObject.addEventListener(clickevent,function(),true)
默認第三個參數是false,也就監聽的是事件冒泡階段
禁止事件向上冒泡
event.stopPropagation()
阻止默認行爲
event.preventDefault(); event.returnValue = false; return false;
哪些默認行爲要做阻止
1. a標籤鏈接跳轉
2. Submit按鈕的提交,
二、js事件委託
js事件委託就是基於事件冒泡傳遞讓父級dom來處理子級dom的事件邏輯。
操控子級dom用得是ev.target屬性
父級dom根據子級dom標籤名判斷對應的子級dom事件邏輯的例子
ul.onclick = function(e){//e指event,事件對象
var target = e.target || e.srcElement; //target獲取觸發事件的目標(li)
if(target.nodeName.toLowerCase() == 'li'){//目標(li)節點名轉小寫字母,不轉的話是大寫字母
alert(target.innerHTML)
}
}