1、定义

事件捕获指的是从document到触发事件的那个节点,即自上而下的去触发事件。
相反的,事件冒泡是自下而上的去触发事件。绑定事件方法的第三个参数,就是控制事件触发顺序是否为事件捕获。
true,事件捕获;false,事件冒泡。默认false,即事件冒泡。e.stopPropagation会阻止冒泡

2、示例

<div id="div1">
  <div id="div2">元素</div>
</div>
<script>

  //事件冒泡

  var div1 = document.getElementById("div1");
  var div2 = document.getElementById("div2");

  div2.addEventListener("click", function(e){console.log("孩子事件")}, true);
  div1.addEventListener("click", function(e){console.log("父亲事件")}, true);

</script>

<script>

  //事件捕获
  var div1 = document.getElementById("div1");
  var div2 = document.getElementById("div2");

  div2.addEventListener("click", function(e){console.log("孩子事件")}, true);
  div1.addEventListener("click", function(e){console.log("父亲事件")}, true);
</script>

3、取消冒泡(两种方式)

标准的W3C 方式:e.stopPropagation();这里的stopPropagation是标准的事件对象的一个方法,调用即可

非标准的IE方式:ev.cancelBubble=true; 这里的cancelBubble是 IE事件对象的属性,设为true就可以了

function stopBubble(e) {//如果提供了事件对象,则这是一个非IE浏览器if ( e && e.stopPropagation )//因此它支持W3C的stopPropagation()方法e.stopPropagation();else{//否则,我们需要使用IE的方式来取消事件冒泡window.event.cancelBubble = true;  }
}4、事件冒泡应用(事件委托或称事件代理)优点:<1>新添加的元素还会有之前的事件<2>减少循环添加事件,性能更好
<script>

  window.onload = function(){
    var oUl = document.getElementById('ull');
    var aLi = document.getElementsByTagName('li');

    oUl.onmouseover = function(ev){
      var event = ev||window.event; // 获取event对象
      var target = ev.target || ev.srcElement; // 获取触发事件的目标对象

      if(target.nodeName.toLowerCase() == 'li'){ //判断目标对象是不是li
        target.style.background = 'red';
      }

    }

  }

</script>

转载于:https://www.cnblogs.com/wangpengfei8313/p/10136189.html

事件冒泡、事件捕获、事件委托相关推荐

  1. JS 中的事件冒泡与捕获

    本文来源:渔人 原文地址:http://yuren.space/blog/2016/10/16/事件冒泡与捕获/ 刚接触 JS 的那个时候,啥也不懂,只想着如何利用 Google.百度到的函数来解决实 ...

  2. js中的DOM事件之冒泡和捕获事件详解

    DOM中的事件是一个很中要的东西,它可以让用户和浏览器之间进行交互,以此来实现人机交互效果 DOM事件 DOM事件分为DOM0级事件和DOM2级事件.DOM0级其实不存在,我们把DOM最初的版本叫0级 ...

  3. 事件冒泡、捕获?如何阻止

    事件冒泡 <style>div{color: white;font-size: 30px;}.content{width: 400px;height: 400px;background-c ...

  4. vue 阻止事件冒泡和捕获

    vue 阻止事件冒泡和捕获 @click.stop : 阻止事件冒泡 @click.prevent : 阻止事件默认行为 @click.self : 事件只作用在元素本身,而不是其子元素

  5. JS 事件冒泡、捕获。学习记录

    作为一个转行刚到公司的新人,任务不多,这一周任务全部消灭,闲暇的一天也别闲着,悄悄的看起了书.今天写一下JS的事件冒泡.捕获. 也是今天看的内容有点多了,有些消化不了,就随手记录一下.纯属自我理解,如 ...

  6. vue 阻止事件冒泡,捕获方法

    要想了解 VUE 阻止事件冒泡和捕获方法,首先要了解一下 JS 事件和 JS 阻止事件冒泡,捕获方法 1. js 事件的三阶段 捕获阶段 目标阶段:执行当前对象的事件处理程序 冒泡阶段 2. js 阻 ...

  7. 如何阻止事件冒泡与默认事件?

    [修真院小课堂]--如何阻止时间冒泡冒泡与默认事件 目录 1.背景介绍 2.知识剖析 3.常见问题 4.解决方案 5.编码实战 6.扩展思考 7.参考文献 8.更多讨论 1.背景介绍 1.什么是事件? ...

  8. js事件冒泡、阻止事件冒泡以及阻止默认行为

    大家好,我是IT修真院武汉分院web第17期的学员吴三水,一枚正直纯洁善良的web程序员. 今天给大家分享一下,修真院官网js(职业)任务四,深度思考中的知识点--js事件冒泡.阻止事件冒泡以及阻止默 ...

  9. 什么是html的事件冒泡,什么是事件冒泡?

    当事件发生在DOM元素上时,该事件并不完全发生在那个元素上.在冒泡阶段,事件冒泡,或者事件发生在它的父代,祖父母,祖父母的父代,直到到达window为止. 假设有如下的 HTML 结构: 1 对应的 ...

  10. JS——事件冒泡与阻止事件冒泡

    文章目录 前言 一.DOM事件流 1.什么是事件流呢? 2.事件流的两种方式 2.1 事件冒泡 2.2 事件捕获 2.3 DOM事件的3个阶段 二.事件对象 1.什么是事件对象 2.事件对象的使用 3 ...

最新文章

  1. 什么是闭包?变量作用域和闭包。
  2. **PHP foreach 如何判断为数组最后一个最高效?
  3. POJ 2391 Ombrophobic Bovines ★(Floyd+二分+拆点+最大流)
  4. IBM为世博会服务支持建立快速反应通道
  5. Spring Cloud构建微服务架构:服务容错保护(Hystrix断路器)
  6. 数据结构与算法 -- 栈 ADT
  7. 警告:‘xxxx’ 将随后被初始化
  8. 高级Java必看的10本书
  9. new失败跟踪函数_关于针对class自定义new操作符失败的函数处理
  10. 【华为云技术分享】Linux内核编程环境 (2)
  11. 第三方框架-纯代码布局:Masonry的简单使用
  12. Apache Log4j2远程JNDI代码执行漏洞修复
  13. Yaf引入oss sdk
  14. unity序列帧优化—Addressables
  15. Python 农历公历日期转换
  16. Mybatis-plus学习-最全细致讲解
  17. 京东探索研究院NLP水平超越微软 织女Vega v1模型位居GLUE榜首
  18. The error may involve mapper.UserMapper.AddUser-Inline
  19. 【Linux】IFS是个什么鬼
  20. 微信支付的软件架构也太特么牛逼了吧...

热门文章

  1. 楼主,不知道为什么这么流行
  2. 亿阳防火墙-命令行指令参考手册
  3. BAT程序员总结的力扣刷题指南,已经在Github了!!刷题顺序,优质题解一网打尽!
  4. BAT程序员手把手带你学算法-数组篇(理论知识剖析+5道经典面试题目)
  5. DBeaverUE for Mac(数据库管理软件)旗舰版
  6. 在具有内置文本扩展功能的苹果Mac上如何更快的键入内容?
  7. 苹果Mac Final Cut Pro更新后,如何将视频分享到YouTube?
  8. WebToLayers如何将网页转换为PSD文档?
  9. Wondershare DVD Creator for Mac使用教程
  10. (完美)华为畅玩7A AUM-AL00的Usb调试模式在哪里打开的步骤