1. 程式人生 > >JavaScript——事件流(事件冒泡和事件捕獲)

JavaScript——事件流(事件冒泡和事件捕獲)

1、事件流

當瀏覽器發展到第4代時,瀏覽器開發團隊遇到了一個問題:頁面中的哪個元素會擁有某個特定的事件?當你單擊某個按鈕時,顯然該單擊事件並不僅僅發生在按鈕上,它還發生在按鈕的所有祖先元素上,比如按鈕的容器元素,容器元素的父元素,甚至整個頁面document。但是,哪個元素最先接收到該事件呢?頁面接收事件的順序又是怎樣的呢?由此引出了事件流的概念。事件流描述的就是從頁面中接收事件的順序。

2、兩個模型
Netscape和Microsoft給出了兩個不同的結論。Netscape說document會首先接收到該事件,提出了事件捕獲流。而Microsoft認為事件首先在按鈕上發生,提出了事件冒泡流。

3、事件冒泡

:其基本思想是事件從事件發生的目標最內部開始觸發,向上觸發到最外部(document物件)


事件冒泡的作用:(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