乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      js中的事件流(對(duì)js事件流簡(jiǎn)單的了解介紹)

       印度阿三17 2020-09-11

      事件流

      什么是事件流

        每個(gè)事件發(fā)生時(shí),都會(huì)有一個(gè)觸發(fā)并執(zhí)行的過(guò)程,也就是事件的傳播過(guò)程,我們稱為事件流;簡(jiǎn)單來(lái)說(shuō),事件事件流就是事件從發(fā)生到執(zhí)行結(jié)束的流程。

      ?

      事件流的三個(gè)階段:捕獲階段,目標(biāo)階段,冒泡階段。

      事件捕獲階段:事件開(kāi)始由頂層元素觸發(fā),然后逐級(jí)向下傳播,直到目標(biāo)元素,依次執(zhí)行其身上邦定的事件; 事件目標(biāo)階段(處理階段):觸發(fā)當(dāng)前自身的事件; 事件冒泡階段:事件由目標(biāo)元素先接收,然后逐級(jí)向上傳播,達(dá)到最頂層元素,依次執(zhí)行其身上綁定的事件。 ?

      事件流模型

      ? 事件執(zhí)行的流程是先捕獲階段→再目標(biāo)元素階段→最后冒泡階段。 目標(biāo)元素的事件是在目標(biāo)階段執(zhí)行,其他事件會(huì)在冒泡階段執(zhí)行。每個(gè)事件只會(huì)執(zhí)行一次,也就是說(shuō)如果在冒泡階段執(zhí)行了事件,就不會(huì)在捕獲階段執(zhí)行。 ? 案例: 設(shè)置大中小三個(gè)盒子的點(diǎn)擊事件
      <style>
          #big{
              width: 300px;
              height: 300px;
              border:1px solid #000;
              background:orange;
          }
          #middle{
              width: 200px;
              height: 200px;
              background: #abcdef;
          }
          #small{
              width: 100px;
              height: 100px;
              background: red;
          }
      </style>
      <body>
          <div id="big">
              大
              <div id="middle">
                  中
                  <div id="small">
                      小
                  </div>
              </div>
          </div>
      </body>
      <script>
      big.onclick=function(){
          console.log(this.innerText);
          console.log("點(diǎn)擊大盒子");
      }
      middle.onclick=function(){
          console.log(this.innerText);
          console.log("點(diǎn)擊中盒子");
      }
      small.onclick=function(){
          console.log(this.innerText);
          console.log("點(diǎn)擊小盒子");
      }
      </script>

      效果

      ?

      當(dāng)我們點(diǎn)擊小盒子觸發(fā)點(diǎn)擊事件時(shí),發(fā)現(xiàn)中盒子跟大盒子的點(diǎn)擊事件也被觸發(fā)了:

      ?

      ?

      ?

      當(dāng)我們點(diǎn)擊中盒子觸發(fā)點(diǎn)擊事件時(shí),發(fā)現(xiàn)大盒子的點(diǎn)擊事件也被觸發(fā)了:

      ?

      ?

      ?

      點(diǎn)擊大盒子時(shí)只觸發(fā)了大盒子的點(diǎn)擊事件

      ?

      上面的情況說(shuō)明:點(diǎn)擊小盒子,發(fā)現(xiàn)小盒子事件完畢后,中盒子的事件也被觸發(fā)了,接著大盒子的事件也被觸發(fā)了。這就是說(shuō)目標(biāo)元素的事件在目標(biāo)階段執(zhí)行,其他事件會(huì)在冒泡階段執(zhí)行。

      ?

      總之總結(jié)成一張圖更好理解:

      ?

      ?

      ?

      ?

      那么如何讓事件在捕獲階段執(zhí)行呢?

        需要使用另外一種事件綁定方式解決點(diǎn)擊小盒子會(huì)同時(shí)觸發(fā)中大盒子的點(diǎn)擊事件。

      使用addEventListener();解決;

      如何使用addEventListener()方法:

      obj.addEventListener(type,handle,false);
      # 參數(shù)1:給元素綁定的事件類型,如:click,mouseover。。。
      # 參數(shù)2:處理事件的函數(shù)
      # 參數(shù)3:是否在冒泡階段執(zhí)行,true在捕獲階段執(zhí)行,false在冒泡階段執(zhí)行

      ?

      把script中的代碼改成:

      document.getElementById("small").addEventListener("click",Click,true);
      
      function Click(){
          console.log(this.innerText);
      }

      效果:

      這樣就解決了當(dāng)觸發(fā)小盒子事件時(shí)同時(shí)觸發(fā)大盒子中盒子也會(huì)觸發(fā)點(diǎn)擊事件的問(wèn)題了。

      來(lái)源:https://www./content-4-735501.html

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多