JS html事件冒泡和事件捕获操作示例


Posted in Javascript onMay 01, 2019

本文实例讲述了JS html事件冒泡和事件捕获操作。分享给大家供大家参考,具体如下:

今天学习了事件冒泡和捕获,记录一下。

1.冒泡型事件:事件按照从最特定的事件目标到最不特定的事件目标(document对象)的顺序触发。

我一般用法就是理解为触发事件A, 会触发A的父亲,爷爷,爷爷的父亲......

代码:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>点击事件捕获冒泡实验</title>
</head>
<body>
<div id="grandPa">
  <div id="father">
    <div id="son">
      <input type="button" value="click"/>
    </div>
  </div>
</div>
<script type="text/javascript">
  var father = document.getElementById('father');
  father.addEventListener('click',function () {
    alert('fattther');
  })
  var son = document.getElementById('son');
  son.addEventListener('click',function () {
    alert('son');
  });
</script>
</body>
</html>

点击button,会以此弹出"son", "father"。

2.捕获事件:使用事件捕获时,父级元素先触发,子级元素后触发。

我们使用addEventListener添加监听事件时,参数分别为(事件类型, function(){}, capture), 一般不写第三个参数时默认为false,即事件冒泡。

所以1中的代码会是事件冒泡顺序。如果我们想改为事件捕获,把参数设置为true即可,代码如下:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>点击事件捕获冒泡实验</title>
</head>
<body>
<div id="container">
  <div id="father">
    <div id="son">
      <input type="button" value="click"/>
    </div>
  </div>
</div>
<script type="text/javascript">
  var father = document.getElementById('father');
  father.addEventListener('click',function () {
    alert('fattther');
  },true)
  var son = document.getElementById('son');
  son.addEventListener('click',function () {
    alert('son');
  });
</script>
</body>
</html>

这样当你点击button后就会以此弹出"father",  "son"了。

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具http://tools.3water.com/code/HtmlJsRun测试上述代码运行效果。

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
用javascript获取当页面上鼠标光标位置和触发事件的对象的代码
Dec 09 Javascript
JQuery.closest(),parent(),parents()寻找父结点
Feb 17 Javascript
Javascript图片上传前的本地预览实例
Jun 16 Javascript
jQuery实现控制文字内容溢出用省略号(…)表示的方法
Feb 26 Javascript
Bootstrap自定义文件上传下载样式
May 26 Javascript
使用 Vue 绑定单个或多个 Class 名的实例代码
Jan 08 Javascript
浅析Angular19 自定义表单控件
Jan 31 Javascript
如何使node也支持从url加载一个module详解
Jun 05 Javascript
解决vue keep-alive 数据更新的问题
Sep 21 Javascript
javascript中的数据类型检测方法详解
Aug 07 Javascript
解决layui checkbox 提交多个值的问题
Sep 02 Javascript
解决vue数据不实时更新的问题(数据更改了,但数据不实时更新)
Oct 27 Javascript
JS实现的贪吃蛇游戏案例详解
May 01 #Javascript
javascript原型链学习记录之继承实现方式分析
May 01 #Javascript
微信小程序实现卡片左右滑动效果的示例代码
May 01 #Javascript
微信小程序常见页面跳转操作简单示例
May 01 #Javascript
浅谈对于react-thunk中间件的简单理解
May 01 #Javascript
vue增加强缓存和版本号的实现方法
May 01 #Javascript
vue组件化中slot的基本使用方法
May 01 #Javascript
You might like
php数组函数序列之in_array() - 查找数组中是否存在指定值
2011/11/07 PHP
详解Laravel视图间共享数据与视图Composer
2016/08/04 PHP
jquery下将选择的checkbox的id组成字符串的方法
2010/11/28 Javascript
javascript中创建对象的三种常用方法
2010/12/30 Javascript
详解Javascript 装载和执行
2014/11/17 Javascript
jQuery浏览器CSS3特写兼容实例
2015/01/19 Javascript
JavaScript控制网页平滑滚动到指定元素位置的方法
2015/04/17 Javascript
ECMAScript6轮播图实践知识总结
2016/08/17 Javascript
React Native实现简单的登录功能(推荐)
2016/09/19 Javascript
JS中split()用法(将字符串按指定符号分割成数组)
2016/10/24 Javascript
基于JavaScript实现Tab选项卡切换效果
2016/11/24 Javascript
vue组件生命周期详解
2017/11/07 Javascript
关于Vue Router中路由守卫的应用及在全局导航守卫中检查元字段的方法
2018/12/09 Javascript
nodejs log4js 使用详解
2019/05/31 NodeJs
LayUI数据接口返回实体封装的例子
2019/09/12 Javascript
JavaScript监听触摸事件代码实例
2019/12/30 Javascript
JavaScript创建表格的方法
2020/04/13 Javascript
通过实例了解Render Props回调地狱解决方案
2020/11/04 Javascript
详解使用python的logging模块在stdout输出的两种方法
2017/05/17 Python
Python探索之pLSA实现代码
2017/10/25 Python
python实现遍历文件夹修改文件后缀
2018/08/28 Python
python修改txt文件中的某一项方法
2018/12/29 Python
不到20行实现Python代码即可制作精美证件照
2020/04/24 Python
python字典的值可以修改吗
2020/06/29 Python
python基于爬虫+django,打造个性化API接口
2021/01/21 Python
一款利用html5和css3动画排列人物头像的实例演示
2014/12/05 HTML / CSS
Linux开机引导的步骤是什么
2015/10/19 面试题
小学毕业感言500字
2014/02/28 职场文书
2014春晚主持词
2014/03/25 职场文书
建设工地安全标语
2014/06/07 职场文书
2014年团支部工作总结
2014/11/17 职场文书
个人汇报材料范文
2014/12/30 职场文书
保送生自荐信范文
2015/03/26 职场文书
学习习近平主席讲话心得体会
2016/01/20 职场文书
七年级生物教学反思
2016/02/20 职场文书
高二化学教学反思
2016/02/22 职场文书