事件捕獲階段:事件從最上一級標簽開始往下查找扼雏,直到捕獲到事件目標(target)。
事件冒泡階段:事件從事件目標(target)開始夯膀,往上冒泡直到頁面的最上一級標簽诗充。
假設(shè)一個元素div,它有一個下級元素p诱建。
元素
這兩個元素都綁定了click事件蝴蜓,如果用戶點擊了p,它在div和p上都觸發(fā)了click事件涂佃,那這兩個事件處理程序哪個先執(zhí)行呢励翼?事件順序是什么蜈敢?
兩種模型
以前,Netscape和Microsoft是不同的實現(xiàn)方式汽抚。
Netscape中抓狭,div先觸發(fā),這就叫做事件捕獲造烁。
Microsoft中否过,p先觸發(fā),這就叫做事件冒泡惭蟋。(IE只支持冒泡)
ie8以下支持ele.attachEvent("onclick", doSomething);
一般addeventListener苗桂。
事件的傳播是可以阻止的:
? 在W3c中,使用stopPropagation()方法
? 在IE下設(shè)置cancelBubble = true告组;
在捕獲的過程中stopPropagation()煤伟;后,后面的冒泡過程也不會發(fā)生了~
3.阻止事件的默認行為木缝,例如click 后的跳轉(zhuǎn)~
? 在W3c中便锨,使用preventDefault()方法;
? 在IE下設(shè)置window.event.returnValue = false;