<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          js 冒泡事件與解決冒泡事件

          共 1605字,需瀏覽 4分鐘

           ·

          2020-11-21 23:52


          事件冒泡 :當(dāng)一個(gè)元素接收到事件的時(shí)候 會(huì)把他接收到的事件傳給自己的父級(jí),一直到window 。

          代碼:

          <div id="div1">  <div id="div2">    <div id="div3">    div>  div>div><style>    #div1{      width: 300px;      height: 200px;      background-color: red;    }    #div2{      width: 250px;      height: 150px;      background-color: green;    }    #div3{      width: 200px;      height: 100px;      background-color: blue;    }style>my$("div1").onclick=function () {    console.log(this.id);  };//div3 div2 div1
          my$("div2").onclick=function () { console.log(this.id); };//div2 div1
          my$("div3").onclick=function () { console.log(this.id); };//div1
          代碼很簡(jiǎn)單,就是三個(gè)父子關(guān)系的div,然后分別加了點(diǎn)擊事件,當(dāng)我們?cè)赿iv3里面點(diǎn)擊的時(shí)候,會(huì)發(fā)現(xiàn)彈出了一次3,接著又彈出了2,最后又彈出了1,這說(shuō)明點(diǎn)擊的時(shí)候,不僅div3的事件被觸發(fā)了,它的父級(jí)div2 與div1的點(diǎn)擊事件也觸發(fā)了,這種現(xiàn)象就叫做冒泡。
          取消事件冒泡有兩種方式:
          1、標(biāo)準(zhǔn)的W3C 方式:e.stopPropagation(); 這里的stopPropagation是標(biāo)準(zhǔn)的事件對(duì)象的一個(gè)方法,調(diào)用即可(谷歌和火狐支持,IE不支持)
          my$("div3").onclick=function (e) {    console.log(this.id);    e.stopPropagation();  };

          2、非標(biāo)準(zhǔn)的IE方式:window.event.cancelBubble=true; 這里的cancelBubble是 IE事件對(duì)象的屬性,設(shè)為true就可以了(IE特有的,谷歌支持,火狐不支持)

          my$("div2").onclick=function () {    console.log(this.id);    window.event.cancelBubble=true;};

          為了兼容解決事件冒泡的方式:

          function stopBubble(e) {      //如果提供了事件對(duì)象,則這是一個(gè)非IE瀏覽器      if (e && e.stopPropagation)        //因此它支持W3C的stopPropagation()方法        e.stopPropagation();      else        //否則,我們需要使用IE的方式來(lái)取消事件冒泡        window.event.cancelBubble = true;    }    my$("div2").onclick = function (e) {      console.log(this.id);      stopBubble(e)    };
          my$("div3").onclick = function (e) { console.log(this.id); stopBubble(e) };


          本文完~


          瀏覽 22
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  台湾成人在线视频。 | 大香蕉之久久 | WWW.撸一 | 欧美成人网站在线观看视频 | 操逼1234 |