JavaScript——事件流(事件冒泡和事件捕獲)
當瀏覽器發展到第4代時,瀏覽器開發團隊遇到了一個問題:頁面中的哪個元素會擁有某個特定的事件?當你單擊某個按鈕時,顯然該單擊事件並不僅僅發生在按鈕上,它還發生在按鈕的所有祖先元素上,比如按鈕的容器元素,容器元素的父元素,甚至整個頁面document。但是,哪個元素最先接收到該事件呢?頁面接收事件的順序又是怎樣的呢?由此引出了事件流的概念。事件流描述的就是從頁面中接收事件的順序。
2、兩個模型
Netscape和Microsoft給出了兩個不同的結論。Netscape說document會首先接收到該事件,提出了事件捕獲流。而Microsoft認為事件首先在按鈕上發生,提出了事件冒泡流。
3、事件冒泡
事件冒泡的作用:(1)事件冒泡允許多個操作被集中處理(把事件處理器新增到一個父級元素上,避免把事件處理器新增到多個子級元素上),還可以讓你在物件層的不同級別捕獲事件
(2)讓不同的物件同事捕獲同一事件,並呼叫自己的專屬處理程式做自己的事情
阻止事件冒泡(程式為轉)
<div onclick="showMsg(this,event)" id="outSide" style="width:100px; height:100px; background:#000; padding:50px"> <div onclick="showMsg(this,event)" id="inSide" style="width:100px; height:100px; background:#CCC"></div> </div> <script type="text/javascript"> //阻止事件冒泡後,你點選灰色盒子,整個過程只彈一次對話方塊了(注意與預設情況對比) function showMsg(obj,e) { alert(obj.id); stopBubble(e) } //阻止事件冒泡函式 function stopBubble(e) { if (e && e.stopPropagation) e.stopPropagation() else window.event.cancelBubble=true } </script>
4.事件捕獲:與冒泡正好相反,事件觸發順序是從最外層的物件(document物件)到最裡面的物件
5、DOM事件流:DOM同時支援事件捕獲和事件冒泡,但是事件捕獲先發生,兩個事件流可以遍歷DOM中的所有物件,起始和結束都是document物件。
<div class="div1" id="di1"> <div class="div1" id="di2"></div> </div> <script type="text/javascript"> function $(ID){ return document.getElementById(ID); } var Div1 = $("di1"); var Div2 = $("di2"); // 當第三個值為true的時候是“捕獲事件” 如果是false則為“冒泡” Div1.addEventListener("click",fun1); Div2.addEventListener("click",fun2); function fun1(){ alert("我是父級div,di1"); return true;//true為事件捕獲 } function fun2(){ alert("我是子級div,di2"); return true;//true為事件捕獲 } </script>
相關推薦
JavaScript——事件流(事件冒泡和事件捕獲)
1、事件流 當瀏覽器發展到第4代時,瀏覽器開發團隊遇到了一個問題:頁面中的哪個元素會擁有某個特定的事件?當你單擊某個按鈕時,顯然該單擊事件並不僅僅發生在按鈕上,它還發生在按鈕的所有祖先元素上,比如按鈕的容器元素,容器元素的父元素,甚至整個頁面document。但是,哪個元素
事件流(事件冒泡和捕獲,函式閉包等)
事件流 事件流描述的是從頁面中接受事件的順序,當幾個都具有事件的元素層疊在一起的時候,那麼你點選其中一個元素,並不是只有當前被點選的元素會觸發事件,而層疊在你點選範圍的所有元素都會觸發事件。 事件流包括兩種模式:冒泡和捕獲 事件捕獲: 父級元素先觸發,子集元素後觸發;(由外到
JS事件流(事件冒泡和事件捕獲)
事件流是描述從頁面接收事件的順序。但是有意思的是,IE和Netscape開發團隊提出了差不多完全相反的事件流概念。IE的事件流是事件冒泡流,而Netspace Communicator的事件流是事件捕獲流。 事件冒泡 IE的事件流叫做事件冒泡(event
關於事件流,事件冒泡和事件捕獲
有意 clas 向上 接收 上傳 單擊事件 sca dom 描述 1.事件流 假設有這樣一個場景: 有一個導航條:div > ul > li > a,每個元素塊寬高一樣,就像是一組同心圓。如果我們點擊a元素,那麽瀏覽器會認為單擊事件不僅僅發生在a上。換
事件流:事件冒泡和事件捕獲
top 選擇器 itl listener doc 三個參數 NPU 默認 捕獲 事件流:事件冒泡和事件捕獲 1. 兩者概念 事件捕獲指的是從document到觸發事件的那個節點,即自上而下的去觸發事件。, element.addEventListener(event,fu
事件流(事件冒泡、事件捕獲以及DOM事件流)
事件流:描述的是從頁面中接收事件的順序。 事件冒泡:IE的事件流叫做事件冒泡,即事件開始時由最具體的元素(文件中巢狀層次最深的那個節點)接收,然後逐級上傳播到較為不具體的節點(文件)。 示例程式碼: <!DOCTYPE html> <html> <
JavaScript 事件冒泡和事件捕捉
含義 事件冒泡 事件的觸發順序為,由內而外。直到文件最頂層(document或window)。 事件捕捉 事件的觸發順序為,由外而內。 任何發生在w3c事件模型中的事件,首是進入捕獲階段,直到達到目標元素,再進入冒泡階段。 //使用事件捕捉模式 element1.
【事件流】事件冒泡和事件捕獲
事件流: 通俗的說就是:元素觸發時,傳播的過程。 冒泡型事件流:事件的傳播是從最具體的事件目標到最不具體的事件目標。即從DOM樹的葉子到根。 <div>—》<body>—》<html>—》document &n
javascript-阻止事件冒泡和事件預設行為
1.事件冒泡 (1-1)冒泡是什麼? 事件冒泡就像熱水沸騰時產生汽泡往上升的情形一樣(往上傳遞的過程),事件冒泡出現的情況:假設一個html結構中兩個標籤存在父子層級關係,父盒子和子盒子都繫結一個相
事件流:事件冒泡和事件捕獲的理解
事件流:事件冒泡和事件捕獲 1. 兩者概念 事件捕獲指的是從document到觸發事件的那個節點,即自上而下的去觸發事件。, element.addEventListener(event,function(),false); 事件冒泡是自下而上的去觸發
需求用例文件編寫建議 --事件流程(基本流程和擴充套件流 (
每個用例表示使用者為實現某個目標與系統的一次互動,而事件流程則是對實現該目標的描述,事件流程包括基本流程(又稱為主成功流程)和可選流程(又稱為擴充套件流程);對這部分的編寫應該清晰的描述不同的物件(使用者、系統)完成目標的活動序列,例如,像這種方式:球員甲將球傳給球員乙,球員乙運球,球員乙將球傳給球員丙。
js 事件流的事件冒泡和事件捕獲與阻止事件傳播
head 阻止事件冒泡 觸發 事件冒泡 單擊 期望 就會 簡單的 出現異常 為了方便引入事件流的概念,我們先來說說什麽是事件。 事件就是用戶或瀏覽器自身執行的某種動作。換句話說,我們在瀏覽網頁或者 APP 時,通常會在設備上產生很多交互性的操作,例如點擊、選擇、滾動屏幕、鍵
阻止事件冒泡和事件默認行為
pre function 防止 處理 true 停止 jquery 事件 val 阻止事件冒泡(兼容IE8) function stopHandler(event){ window.event?window.event.cancelBubble=true:even
js的事件冒泡和事件捕獲
use 應用 ges color mouse 冒泡 code 元素事件 三個參數 一、定義 事件捕獲:從document到觸發事件的那個節點,自上而下觸發事件; 事件冒泡:從觸發事件節點依次向上觸發事件,直到document。 原聲js中,綁定事件方法addEventLis
js之事件冒泡和事件捕獲詳細介紹
1-1 ppr lang strong 傳播 默認 ont 也不會 element (1)冒泡型事件:事件按照從最特定的事件目標到最不特定的事件目標(document對象)的順序觸發。 IE 5.5: div -> body -> document
JS事件冒泡和事件捕獲
border 綁定 tab 現在 cells 一次 tel 加載 adding 他們是描述事件觸發時序問題的術語。事件捕獲指的是從document到觸發事件的那個節點,即自上而下的去觸發事件。相反的,事件冒泡是自下而上的去觸發事件。綁定事件方法的第三個參數,就是控制事件觸發
DOM事件機制(事件捕獲和事件冒泡和事件委托)
使用 tar web strong 事件 所有 span click ner 內容: 1.事件復習 2.事件冒泡與事件捕獲 3.事件委托 1.事件復習 (1)事件 事件是用來處理響應的一個機制,這個響應可以來自於用戶(點擊, 鼠標移動, 滾動), 也可以來自於瀏
事件冒泡和事件捕獲
pad http eve class click true blue on() 寫法 事件冒泡有空補充(印象筆記裏) 事件捕獲 瀏覽器默認,由裏向外逐漸觸發事件,這種行為叫做事件冒泡。 利用事件監聽可以使瀏覽器,由外向裏逐漸觸發事件,這種行為叫做事件捕獲。
JS之捕獲冒泡和事件委託
一、事件流(捕獲,冒泡) 事件流:指從頁面中接收事件的順序,有冒泡流和捕獲流。 當頁面中發生某種事件(比如滑鼠點選,滑鼠滑過等)時,毫無疑問子元素和父元素都會接收到該事件,可具體順序是怎樣的呢?冒泡和捕獲則描述了兩種不同的順序。 DOM2
事件,事件冒泡和事件捕獲
1.事件 瀏覽器客戶端上客戶觸發的行為都稱為事件 所有的事件都是天生自帶的,不需要我們去繫結,只需要我們去觸發。 通過obj.事件名=function(){} 事件名:onmouseover onmouseout onmousedown onmousemove onmouseup Onclick&n