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

JS中事件冒泡和事件捕獲介紹

 更新時間:2016年12月13日 10:02:01   作者:big董  
這篇文章主要為大家詳細(xì)介紹了JS中事件冒泡和事件捕獲的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下

談起JavaScript的 事件,事件冒泡、事件捕獲、阻止默認(rèn)事件這三個話題,無論是面試還是在平時的工作中,都很難避免。
事件捕獲階段:事件從最上一級標(biāo)簽開始往下查找,直到捕獲到事件目標(biāo)(target)。
事件冒泡階段:事件從事件目標(biāo)(target)開始,往上冒泡直到頁面的最上一級標(biāo)簽。

1、冒泡事件:

事件按照從最特定的事件目標(biāo)到最不特定的事件目標(biāo)(document對象)的順序觸發(fā)。通俗來講就是,就是當(dāng)設(shè)定了多個div的嵌套時;即建立了父子關(guān)系,當(dāng)父div與子div共同加入了onclick事件時,當(dāng)觸發(fā)了子div的onclick事件后,子div進(jìn)行相應(yīng)的js操作,但是父div的onclick事件同樣會被觸發(fā)。

html:

<div>
 <input type="button" value="測試事件冒泡" />
</div>

js:

  var $input = document.getElementsByTagName("input")[0];
   var $div = document.getElementsByTagName("div")[0];
   var $body = document.getElementsByTagName("body")[0];
 
   $input.onclick = function(e){
      this.style.border = "5px solid red"
      var e = e || window.e;
      alert("red")
   }
   $div.onclick = function(e){
      this.style.border = "5px solid green"
      alert("green")
   }
   $body.onclick = function(e){
      this.style.border = "5px solid yellow"
      alert("yellow")
   }

效果:依次彈出”red“,"green","yellow"。這就是事件冒泡:觸發(fā)button這個元素,卻連同父元素綁定的事件一同觸發(fā)。

2、阻止事件冒泡

如果對input的事件綁定改為:

$input.onclick = function(e){
  this.style.border = "5px solid red"
  var e = e || window.e;
  alert("red")
  e.stopPropagation();
}

這個時候只會彈出”red“,因為阻止了事件冒泡。

3、事件捕獲:

從頂層元素到目標(biāo)元素或者從目標(biāo)元素到頂層元素,和事件冒泡是一個相反的過程。事件從最不精確的對象(document 對象)開始觸發(fā),然后到最精確(也可以在窗口級別捕獲事件,不過必須由開發(fā)人員特別指定)。

$input.addEventListener("click", function(){
  this.style.border = "5px solid red";
  alert("red")
}, true)
$div.addEventListener("click", function(){
  this.style.border = "5px solid green";
  alert("green")
}, true)
$body.addEventListener("click", function(){
  this.style.border = "5px solid yellow";
  alert("yellow")
}, true)

這個時候依次彈出”yellow“,"green","red"。這就是事件的捕獲。 

如果把a(bǔ)ddEventListener方法的第三個參數(shù)改成false,則表示只在冒泡的階段觸發(fā),彈出的依次為:”red“,"green","yellow"。這是因為在W3C模型中,任何事件發(fā)生時,先從頂層開始進(jìn)行事件捕獲,直到事件觸發(fā)到達(dá)了事件源元素。然后,再從事件源往上進(jìn)行事件冒泡,直到到達(dá)document。

程序員可以自己選擇綁定事件時采用事件捕獲還是事件冒泡,方法就是綁定事件時通過addEventListener函數(shù),它有三個參數(shù),第三個參數(shù)若是true,則表示采用事件捕獲,若是false,則表示采用事件冒泡。

ele.addEventListener('click',doSomething2,true)
true=捕獲
false=冒泡

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 淺談Vue3.0之前你必須知道的TypeScript實戰(zhàn)技巧

    淺談Vue3.0之前你必須知道的TypeScript實戰(zhàn)技巧

    這篇文章主要介紹了淺談Vue3.0之前你必須知道的TypeScript實戰(zhàn)技巧,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • JS小功能(offsetLeft實現(xiàn)圖片滾動效果)實例代碼

    JS小功能(offsetLeft實現(xiàn)圖片滾動效果)實例代碼

    這篇文章主要介紹了offsetLeft實現(xiàn)圖片滾動效果實例代碼,有需要的朋友可以參考一下
    2013-11-11
  • 詳解JavaScript狀態(tài)容器Redux

    詳解JavaScript狀態(tài)容器Redux

    Redux官網(wǎng)上是這樣描述Redux,Redux is a predictable state container for JavaScript apps.(Redux是JavaScript狀態(tài)容器,提供可預(yù)測性的狀態(tài)管理)。目前Redux GitHub有5w多star,足以說明 Redux 受歡迎的程度
    2021-06-06
  • JavaScript之移動端H5生成圖片解決方案講解

    JavaScript之移動端H5生成圖片解決方案講解

    這篇文章主要介紹了JavaScript之移動端H5生成圖片解決方案講解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • js實現(xiàn)移動端輪播圖效果

    js實現(xiàn)移動端輪播圖效果

    這篇文章主要為大家詳細(xì)介紹了js實現(xiàn)移動端輪播圖效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • javascript簡單實現(xiàn)命名空間效果

    javascript簡單實現(xiàn)命名空間效果

    這篇文章主要介紹了javascript簡單的實現(xiàn)命名空間效果的方法。需要的朋友可以過來參考下,希望對大家有所幫助
    2014-03-03
  • 微信小程序中視頻的顯示與隱藏功能

    微信小程序中視頻的顯示與隱藏功能

    這篇文章主要介紹了微信小程序中視頻的顯示與隱藏,思路大概是定義一個標(biāo)記變量,控制視頻的播放與暫停,本文結(jié)合實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-10-10
  • JS圖像無縫滾動腳本非常好用

    JS圖像無縫滾動腳本非常好用

    最好用的JS圖像無縫滾動腳本,根據(jù)需要改改寬度和圖像個數(shù)就可以了,需要的朋友可以參考下
    2014-02-02
  • 150行代碼帶你實現(xiàn)微信小程序中的數(shù)據(jù)偵聽

    150行代碼帶你實現(xiàn)微信小程序中的數(shù)據(jù)偵聽

    在這篇文章中, 我將用150行代碼, 手把手帶你打造一個小程序也可以使用的偵聽器,感興趣的朋友跟隨小編一起看看吧
    2019-05-05
  • javascript實用小函數(shù)使用介紹

    javascript實用小函數(shù)使用介紹

    本文整理了一些實用小函數(shù)如阻止輸入非數(shù)字,backspace除外;限制輸入最大字符串長度等,需要的朋友可以了解下
    2013-11-11

最新評論