一、什么是事件:
- 用戶->操作HTML元素->產生一個事件->事件主動的調用設定的方法(函數)
二、注冊事件
- HTML屬性
- 屬性名:on+事件的名字
onclick
- 屬性值:方法
- 1:直接在HTML設定
- 2:通過js元素對象來設定
- 通過系統提供的方法(可以給一個事件綁定多個方法)
div.addEventListner(事件類型,函數,事件的處理方式)
- 刪除事件
- FF:
div.removeEventListner(事件類型,函數)
- IE:
添加事件:attachEvent();刪除事件:detachEvent()
三、事件函數
- 事件函數:事件發生的時候操作的函數
- 事件對象event(
具體發生事件的元素,鼠標的位置,點擊的狀態,鍵盤的按鈕
)
screen:基于屏幕;client:基于瀏覽器
- 兼容寫法
var e=window.event(IE8以及以前) || event
四、阻止默認事件
event.preventDefault()
return false(只針對a.onclick=add;)
- IE:
event.returnValue=false
五、事件傳播
- 默認情況下,單擊頁面一個標簽,處在路徑上的標簽都會監聽到對應的事件
- 事件流:對應標簽接受對象事件的順序
- 兩個階段:
- 捕獲階段:從起始點-->目標位置
- 冒泡階段:目標位置-->起始點
-
addEventListner(參數1,參數2,參數3)
(第三個參數:默認false-->冒泡節點執行;true:捕獲階段執行
)
六、阻止冒泡
- FF:
event.stopPropagation()
- IE:
event.cancelBubble=true
七、事件代理(事件委托)
ul.onclick=function (event) {
var e = event||window.event,
source = e.target || e.srcElement;//target表示在事件冒泡中觸發事件的源元素,在IE中是srcElement
if(source.nodeName.toLowerCase() == "li"){ //判斷只有li觸發的才會輸出內容
alert(source.innerHTML);
}
stopPropagation(e); //阻止繼續冒泡
};
function addElement() {
var li = document.createElement('li');
li.innerHTML="我是新孩子";
ul.appendChild(li);
}