在js中,繫結的事件預設的執行時間是在冒泡階段執行,而非在捕獲階段(重要),這也是為什麼當父類和子類都繫結了某個事件,會先呼叫子類繫結的事件,後呼叫父類的事件。直接看下面例項
當點選id3元素時候,執行結果是:id2,id3,id1
解析:因為obj2與obj3繫結的方法在捕獲階段執行,obj1的事件在冒泡階段執行。
在js中,繫結的事件預設的執行時間是在冒泡階段執行,而非在捕獲階段,必須要理解
不過我們可以通過繫結事件時,指定事件執行時間是在冒泡階段還是捕獲階段。
obj.addeventlistener(event,function(){},bool)
bool:false,代表冒泡階段執行
bool:true,代表捕獲階段執行
js在預設情況下獲取事件後,就開始從根元素開始捕獲所有該事件的監聽物件,然後在冒泡階段逐一執行。捕獲階段是在冒泡階段前面
阻止冒泡
w3c的方法是e.stoppropagation(),ie則是使用e.cancelbubble = true;
阻止預設行為
w3c的方法是e.preventdefault(),ie則是使用e.returnvalue = false;
onclick,click,on()的優先關係:onclick>click>on();
onclick和click繫結的事件,彼此之間遵守事件冒泡規則,從內到外觸發;
on()繫結的事件,總是晚於onclick和click繫結的事件觸發;
事件冒泡和事件捕獲
事件冒泡 事件物件沿dom樹向上傳播 事件捕獲 事件物件沿dom樹向下傳播 addeventlistener click function flase 引數預設為false 代表事件冒泡,引數為true代表事件捕獲 attachevent onclick function detachevent 沒...
事件捕獲和事件冒泡
如果乙個節點和它的乙個父節點都繫結了相同事件型別的 當事件觸發時哪個 會先執行?儘管網景和微軟的處理方式不一致,也不要太過擔心。netscape 4 支援事件捕捉 capturing 從頂層的父節點開始觸發事件,從外到內傳播。微軟則支援事件冒泡 bubbling 從最內層的節點開始觸發事件,逐級冒泡...
事件冒泡和事件捕獲
物件導向 單列模式 工廠模式 建構函式 1 類 js天生自帶的類 object 基類 function array number math boolean date regexp string 1.事件 瀏覽器客戶端上客戶觸發的行為都稱為事件 所有的事件都是天生自帶的,不需要我們去繫結,只需要我們去...