事件冒泡和事件捕獲

2022-07-15 02:27:08 字數 823 閱讀 8225

在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.事件 瀏覽器客戶端上客戶觸發的行為都稱為事件 所有的事件都是天生自帶的,不需要我們去繫結,只需要我們去...