最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

1、冒泡事件:

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

html:

<div>
 <input type="button" value="測(cè)試事件冒泡" />
</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這個(gè)元素,卻連同父元素綁定的事件一同觸發(fā)。

2、阻止事件冒泡

如果對(duì)input的事件綁定改為:

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

這個(gè)時(shí)候只會(huì)彈出”red“,因?yàn)樽柚沽耸录芭荨?br />

3、事件捕獲:

從頂層元素到目標(biāo)元素或者從目標(biāo)元素到頂層元素,和事件冒泡是一個(gè)相反的過(guò)程。事件從最不精確的對(duì)象(document 對(duì)象)開始觸發(fā),然后到最精確(也可以在窗口級(jí)別捕獲事件,不過(guò)必須由開發(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)

這個(gè)時(shí)候依次彈出”yellow“,"green","red"。這就是事件的捕獲。 

如果把a(bǔ)ddEventListener方法的第三個(gè)參數(shù)改成false,則表示只在冒泡的階段觸發(fā),彈出的依次為:”red“,"green","yellow"。這是因?yàn)樵赪3C模型中,任何事件發(fā)生時(shí),先從頂層開始進(jìn)行事件捕獲,直到事件觸發(fā)到達(dá)了事件源元素。然后,再?gòu)氖录赐线M(jìn)行事件冒泡,直到到達(dá)document。

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

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

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

相關(guān)文章

  • js 將多個(gè)對(duì)象合并成一個(gè)對(duì)象 assign方法的實(shí)現(xiàn)

    js 將多個(gè)對(duì)象合并成一個(gè)對(duì)象 assign方法的實(shí)現(xiàn)

    這篇文章主要介紹了js 將多個(gè)對(duì)象合并成一個(gè)對(duì)象 assign方法的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • BootStrap與Select2使用小結(jié)

    BootStrap與Select2使用小結(jié)

    這個(gè)select2組件的功能確實(shí)很強(qiáng)大,可以將圖片放入到select里面隨著文字一起顯示。接下來(lái)通過(guò)本文給大家分享BootStrap與Select2使用小結(jié),需要的朋友參考下
    2017-02-02
  • JavaScript實(shí)現(xiàn)網(wǎng)頁(yè)下拉菜單效果

    JavaScript實(shí)現(xiàn)網(wǎng)頁(yè)下拉菜單效果

    這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)網(wǎng)頁(yè)下拉菜單效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • js實(shí)現(xiàn)表單多按鈕提交action的處理方法

    js實(shí)現(xiàn)表單多按鈕提交action的處理方法

    這篇文章主要介紹了js實(shí)現(xiàn)表單多按鈕提交action的處理方法,需要的朋友可以參考下
    2015-10-10
  • javascript間隔刷新的簡(jiǎn)單實(shí)例

    javascript間隔刷新的簡(jiǎn)單實(shí)例

    這篇文章介紹了javascript間隔刷新的簡(jiǎn)單實(shí)例,有需要的朋友可以參考一下
    2013-11-11
  • 簡(jiǎn)單的js計(jì)算器實(shí)現(xiàn)

    簡(jiǎn)單的js計(jì)算器實(shí)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了如何實(shí)現(xiàn)簡(jiǎn)單js計(jì)算器的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • BootStrap3學(xué)習(xí)筆記(一)之網(wǎng)格系統(tǒng)

    BootStrap3學(xué)習(xí)筆記(一)之網(wǎng)格系統(tǒng)

    本文給大家介紹BootStrap3網(wǎng)格系統(tǒng)的相關(guān)知識(shí),本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,感興趣的朋友一起學(xué)習(xí)吧
    2016-05-05
  • 如何正確理解javascript的模塊化

    如何正確理解javascript的模塊化

    模塊化在項(xiàng)目中十分的重要,一個(gè)復(fù)雜的項(xiàng)目肯定有很多相似的功能模塊,如果每次都需要重新編寫模塊肯定既費(fèi)時(shí)又耗力。但是引用別人編寫模塊的前提是要有統(tǒng)一的“打開姿勢(shì)”,如果每個(gè)人有各自的寫法,那么肯定會(huì)亂套,下面介紹幾種JS的模塊化的規(guī)范。
    2017-03-03
  • 關(guān)于對(duì)async?await效率問(wèn)題的深入思考

    關(guān)于對(duì)async?await效率問(wèn)題的深入思考

    這篇文章主要給大家介紹了關(guān)于對(duì)async?await效率問(wèn)題的深入思考,async和await要搭配Promise使用,它進(jìn)一步極大的改進(jìn)了Promise的寫法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-01-01
  • JS修改css樣式style淺談

    JS修改css樣式style淺談

    分為改變直接樣式,改變className和改變cssText三種,需要的朋友可以參考下
    2013-05-05

最新評(píng)論

杭锦旗| 两当县| 兴安县| 彰化市| 红安县| 泾川县| 仁寿县| 青川县| 舞阳县| 慈溪市| 成武县| 辽阳市| 兰坪| 自贡市| 涪陵区| 昆山市| 银川市| 渭南市| 新邵县| 华安县| 五寨县| 筠连县| 商都县| 邵阳县| 阿勒泰市| 鄢陵县| 嘉义市| 通州市| 永福县| 且末县| 绥中县| 武汉市| 泽库县| 桂阳县| 正宁县| 平定县| 河池市| 聂拉木县| 濮阳市| 永川市| 湘西|