暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

js 冒泡事件与解决冒泡事件

碧茂大数据 2020-11-19
205
更多精彩,请点击上方蓝字关注我们!


事件冒泡 :当一个元素接收到事件的时候 会把他接收到的事件传给自己的父级,一直到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
    代码很简单,就是三个父子关系的div,然后分别加了点击事件,当我们在div3里面点击的时候,会发现弹出了一次3,接着又弹出了2,最后又弹出了1,这说明点击的时候,不仅div3的事件被触发了,它的父级div2 与div1的点击事件也触发了,这种现象就叫做冒泡。
    取消事件冒泡有两种方式:
    1、标准的W3C 方式:e.stopPropagation(); 这里的stopPropagation是标准的事件对象的一个方法,调用即可(谷歌和火狐支持,IE不支持)
      my$("div3").onclick=function (e) {
      console.log(this.id);
      e.stopPropagation();
      };

      2、非标准的IE方式:window.event.cancelBubble=true; 这里的cancelBubble是 IE事件对象的属性,设为true就可以了(IE特有的,谷歌支持,火狐不支持)

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

        为了兼容解决事件冒泡的方式:

          function stopBubble(e) {
          //如果提供了事件对象,则这是一个非IE浏览器
          if (e && e.stopPropagation)
          //因此它支持W3C的stopPropagation()方法
          e.stopPropagation();
          else
          //否则,我们需要使用IE的方式来取消事件冒泡
          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)
          };


          本文完~


          图文 来源网络

          版权归原作者所有,侵联删

          END


          碧茂课堂精彩课程推荐:

          1.Cloudera数据分析课;

          2.Spark和Hadoop开发员培训;

          3.大数据机器学习之推荐系统;

          4.Python数据分析与机器学习实战;

          详情请关注我们公众号:碧茂大数据-课程产品-碧茂课堂

          现在注册互动得海量学币,大量精品课程免费送!




          关注最新行业动态,

          加群进行技术交流




          文章转载自碧茂大数据,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

          评论