JavaScript 冒泡事件 / 事件的传播

逃离我推掉我的手 2023-07-23 03:56 112阅读 0赞

冒泡事件

定义

子级标签触发事件,JavaScript中,父级程序默认也会触发相同类型的事件,这样的效果,称为冒泡事件。

规则

  1. 只与标签在HTML中的层级关系有关,与css和显示效果无关
  2. 执行顺序,都是从当前标签向父级元素,执行
  3. 实际的标签的捕获顺序是有区别的:
  4. IE浏览器是 子级向父级 获取标签,称为 冒泡机制
  5. 其他浏览器 父级向子级 获取标签,称为 捕获机制
  6. 虽然获取标签的方式不一样
  7. 但是现在所有的执行顺序都是从当前标签向父级标签执行

阻止事件的传播 / 阻止冒泡事件

语法规则

事件对象.stopPropagation()

  1. 哪个标题有阻止冒泡事件代码,冒泡事件的执行就到这个标签为止
  2. 只触发自己身上的事件,不会触发 父级标签 相同类型的事件
  3. 只管自己,谁写,谁不触发,子级父级都不管,就自己触发自己的事件

兼容处理

低版本IE浏览器 会有兼容问题。

兼容语法:
  1. 事件对象.cancelBubble = true; 阻止冒泡事件,阻止事件的传播
  2. if(事件对象.stopPropagation){
  3. 事件对象.stopPropagation();
  4. }
  5. else{
  6. 事件对象.cancelBubble = true;
  7. }

实例

css样式:
  1. .box{
  2. width: 400px;
  3. height: 400px;
  4. background: blue;
  5. }
  6. .middle{
  7. width: 300px;
  8. height: 300px;
  9. background: green;
  10. }
  11. .inner{
  12. width: 200px;
  13. height: 200px;
  14. background: orange;
  15. }

html:

  1. <div class="box">
  2. <div class="middle">
  3. <div class="inner"></div>
  4. </div>
  5. </div>
  6. <script> var oDivBox = document.querySelectorAll('div')[0]; var oDivMiddle = document.querySelectorAll('div')[1]; var oDivInner = document.querySelectorAll('div')[2]; oDivBox.onclick = function(e){ e = e || window.event; console.log('我是box-div触发的事件'); // 阻止冒泡事件 / 阻止事件的传播 // 给最外层加载,只是阻止当前标签,触发父级标签的事件 // 不影响,子级标签,触发父级标签事件 // 阻止当前div,触发父级标签的事件 // 但是不影响子级的两个div标签 // e.stopPropagation(); if(e.stopPropagation){ e.stopPropagation(); }else{ e.cancelBubble = true; } }; oDivMiddle.onclick = function(e){ e = e || window.event; console.log('我是middle-div触发的事件'); // e.stopPropagation(); if(e.stopPropagation){ e.stopPropagation(); }else{ e.cancelBubble = true; } }; oDivInner.onclick = function(e){ e = e || window.event; console.log('我是inner-div触发的事件'); // e.stopPropagation(); if(e.stopPropagation){ e.stopPropagation(); }else{ e.cancelBubble = true; } }; document.onclick = function(){ console.log('我是document'); } </script>

发表评论

表情:
评论列表 (有 0 条评论,112人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JavaScript 事件冒泡

    JavaScript 事件冒泡 JavaScript事件传播分为两个阶段: (1).事件捕获阶段。 (2).事件冒泡阶段。 考虑到文章篇幅问题,本文只介绍事件冒泡。 大...