一、概述
瀏覽器事件流存在三個階段:捕獲階段慨蛙、目標階段、冒泡階段,捕獲和冒泡是事件傳播的兩種截然相反的方式纪挎。
二期贫、什么是捕獲和冒泡
見以下例子:
<div class="parent">
<div class="child"></div>
</div>
此結(jié)構(gòu)中,點擊子元素:
??捕獲機制中廷区,事件從document一直向點擊的元素傳播,直到被點擊元素贾铝。
??冒泡機制中隙轻,事件從被點擊元素逐層向其父元素傳播,直到根節(jié)點垢揩。
?簡單的說玖绿,捕獲機制由外向內(nèi)傳播,冒泡機制由內(nèi)向外傳播叁巨。
三斑匪、事件綁定
?傳統(tǒng)綁定方法:onclick,使用的是冒泡機制,并且一個事件只能綁定一個函數(shù)(如需執(zhí)行多個函數(shù)锋勺,可在外層函數(shù)內(nèi)定義多個函數(shù))
?非IE中用addEventListener(eventName,callback,isCapturing)綁定事件蚀瘸,IE8以下不支持此方法狡蝶,最后的isCapturing參數(shù)true表示采用捕獲機制,false表示采用冒泡機制贮勃,不寫第三個參數(shù)默認為false,即默認采用冒泡機制贪惹,可以為一個事件綁定多個響應函數(shù)。
?由于IE8以下不支持addEventListener,事件綁定采用IE自有的attachEvent(eventName,callback)寂嘉,可以看到此函數(shù)無第三參數(shù)奏瞬,無法指定事件處理機制,默認使用捕獲機制處理泉孩。值得注意的是硼端,自IE11起已不支持此方法,應當使用W3C標準規(guī)定的addEventListener方法寓搬。
1.基礎回顧-瀏覽器事件機制
2.JavaScript 詳說事件機制之冒泡珍昨、捕獲、傳播订咸、委托
3.javascript事件機制詳解