欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

js事件機制----捕獲與冒泡機制實例分析

 更新時間:2020年05月22日 10:09:21   作者:NO0b  
這篇文章主要介紹了js事件機制----捕獲與冒泡機制,結合實例形式分析了js事件機制中捕獲與冒泡機制相關原理、操作技巧與注意事項,需要的朋友可以參考下

本文實例講述了js事件機制----捕獲與冒泡機制。分享給大家供大家參考,具體如下:

先從事件綁定機制說起, 事件綁定機制通過綁定方法addEventListener()實現(xiàn),

語法格式如下:

element.addEventListener(event, function, useCapture)

參數(shù)值

參數(shù) 描述
event 必須。字符串,指定事件名。

注意: 不要使用 "on" 前綴。 例如,使用 "click" ,而不是使用 "onclick"。 

提示: 所有 HTML DOM 事件,可以查看我們完整的 HTML DOM Event 對象參考手冊
function 必須。指定要事件觸發(fā)時執(zhí)行的函數(shù)。 

當事件對象會作為第一個參數(shù)傳入函數(shù)。 事件對象的類型取決于特定的事件。例如, "click" 事件屬于 MouseEvent(鼠標事件) 對象。
useCapture 可選。布爾值,指定事件是否在捕獲或冒泡階段執(zhí)行。

可能值:
  • true - 事件句柄在捕獲階段執(zhí)行
  • false- false- 默認。事件句柄在冒泡階段執(zhí)行

我們可以看到第三個參數(shù)是布爾值, true表示在捕獲階段執(zhí)行, 而false指在冒泡階段執(zhí)行

所以什么是 捕獲和冒泡?

捕獲(capture)和冒泡(bubble)是事件傳播過程中的兩個概念, 比如用戶單擊某個元素, 但由于元素處于父元素內(nèi), 該父元素又處于document對象中, document對象又處于window對象中, 因此該單擊事件實際發(fā)生在該元素, 父元素, document, window對象上, 而事件傳播過程就是瀏覽器決定依次觸發(fā)哪個對象的事件處理函數(shù)的過程.

DOM事件模型將事件傳播過程分為兩個階段: 捕獲階段和冒泡階段

在事件捕獲階段, 事件從最頂級的父元素逐層向內(nèi)傳遞,

在冒泡階段, 事件從事件發(fā)生的直接元素 , 逐層向父元素傳遞

這里舉個簡單的例子:

點擊孫子元素, 給body中的元素都添加點擊事件并輸出觸發(fā)事件的對象id:

<!DOCTYPE html>
<html>
<head>
</head>
<body>
 <div id="父級">
 <div id="兒子">
  <div id="孫子" style="width:100px; height:100px; background-color:yellow">
  </div>
 </div>
 </div>
</body>
<script type="text/javascript">
 var a = document.getElementById('父級'),
 b = document.getElementById('兒子'),
 c = document.getElementById('孫子');
 a.addEventListener("click",show, true);
 b.addEventListener("click",show, true);
 c.addEventListener("click",show, true);
 console.log("前3為捕獲,后三個為冒泡");
 a.addEventListener("click",show, false);
 b.addEventListener("click",show, false);
 c.addEventListener("click",show, false);
 function show(even){ console.log(this.id); }
</script>
</html>

其中兩條孫子輸出相同被折疊了, 可以看到前三個是以捕獲順序, 第三個參數(shù)為true, 順序是從父親到孫子

后三個為false意思是冒泡順序, 順序是孫子到父級,即從內(nèi)到外

實際上捕獲和冒泡時最外層和的元素并不是父級div,

捕獲時實際上是:

document-->html-->body-->父級div-->兒子div-->孫子div

冒泡時相反, 只不過body及以上沒添加事件并輸出, 所以在例子中沒顯現(xiàn)出來

所以用冒泡還是捕獲?

  對于事件代理來說,在事件捕獲或者事件冒泡階段處理并沒有明顯的優(yōu)劣之分,但是由于事件冒泡的事件流模型被所有主流的瀏覽器兼容,從兼容性角度來說還是建議大家使用事件冒泡模型。

感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運行工具http://tools.jb51.net/code/HtmlJsRun測試上述代碼運行效果。

更多關于JavaScript相關內(nèi)容感興趣的讀者可查看本站專題:《JavaScript操作DOM技巧總結》、《JavaScript頁面元素操作技巧總結》、《JavaScript事件相關操作與技巧大全》、《JavaScript查找算法技巧總結》、《JavaScript數(shù)據(jù)結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript錯誤與調(diào)試技巧總結

希望本文所述對大家JavaScript程序設計有所幫助。

相關文章

  • ECMAScript?的?6?種簡單數(shù)據(jù)類型

    ECMAScript?的?6?種簡單數(shù)據(jù)類型

    這篇文章主要介紹了ECMAScript的?6?種簡單數(shù)據(jù)類型,ECMAScript的數(shù)據(jù)類型很靈活,一種數(shù)據(jù)類型可以當作多種數(shù)據(jù)類型來使用,具體使用詳情文章詳細介紹需要的小伙伴可以參考一下
    2022-06-06
  • js彈出對話框方式小結

    js彈出對話框方式小結

    這篇文章主要介紹了js彈出對話框方式,結合大量實例總結分析了JavaScript常用的彈出對話框的實現(xiàn)技巧與相關函數(shù)的具體使用方法,需要的朋友可以參考下
    2015-11-11
  • JS中改變this指向的方法(call和apply、bind)

    JS中改變this指向的方法(call和apply、bind)

    this是javascript的一個關鍵字,隨著函數(shù)使用場合不同,this的值會發(fā)生變化。但是總有一個原則,那就是this指的是調(diào)用函數(shù)的那個對象,通過本文給大家介紹JS中改變this指向的方法(call和apply、bind),需要的朋友參考下
    2016-03-03
  • javascript閉包的使用之按鈕切換功能

    javascript閉包的使用之按鈕切換功能

    閉包就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù).這篇文章通過實例代碼給大家介紹了javascript閉包的使用之按鈕切換功能,感興趣的朋友一起看看吧
    2018-08-08
  • JS實現(xiàn)網(wǎng)頁導航條特效

    JS實現(xiàn)網(wǎng)頁導航條特效

    這篇文章主要為大家詳細介紹了JS實現(xiàn)網(wǎng)頁導航條特效,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • 細說webpack源碼之compile流程-入口函數(shù)run

    細說webpack源碼之compile流程-入口函數(shù)run

    Webpack 是一個前端資源加載/打包工具。它將根據(jù)模塊的依賴關系進行靜態(tài)分析,然后將這些模塊按照指定的規(guī)則生成對應的靜態(tài)資源。這篇文章主要介紹了webpack源碼之compile流程-入口函數(shù)run,需要的朋友可以參考下
    2017-12-12
  • javascript嵌套函數(shù)和在函數(shù)內(nèi)調(diào)用外部函數(shù)的區(qū)別分析

    javascript嵌套函數(shù)和在函數(shù)內(nèi)調(diào)用外部函數(shù)的區(qū)別分析

    這篇文章主要介紹了javascript嵌套函數(shù)和在函數(shù)內(nèi)調(diào)用外部函數(shù)的區(qū)別,需要的朋友可以參考下
    2016-01-01
  • Bootstrap?table列上下移動效果

    Bootstrap?table列上下移動效果

    這篇文章主要為大家詳細介紹了Bootstrap?table列上下移動效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 原生JS實現(xiàn)DOM加載完成馬上執(zhí)行JS代碼的方法

    原生JS實現(xiàn)DOM加載完成馬上執(zhí)行JS代碼的方法

    今天小編就為大家分享一篇原生JS實現(xiàn)DOM加載完成馬上執(zhí)行JS代碼的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • 圖片onload事件觸發(fā)問題解決方法

    圖片onload事件觸發(fā)問題解決方法

    當頁面上存在一個圖片元素時如:<img src='xxxx' alt="" />,頁面加載中ie7、8跟chrome下圖片的onload事件非常奇怪,有后完全不觸發(fā),有時候觸發(fā)后進行改變某些元素的操作,操作結果無效。
    2011-07-07

最新評論