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 相关文章推荐
JS实现图片翻书效果示例代码
Sep 09 Javascript
jquery重复提交请求的原因浅析
May 23 Javascript
简单谈谈JavaScript的同步与异步
Dec 31 Javascript
jQuery遮罩层效果实例分析
Jan 14 Javascript
jquery easyui dataGrid动态改变排序字段名的方法
Mar 02 Javascript
微信小程序之圆形进度条实现思路
Feb 22 Javascript
解决使用vue.js路由后失效的问题
Mar 17 Javascript
vue-cli3脚手架的配置及使用教程
Aug 28 Javascript
JavaScript this绑定过程深入详解
Dec 07 Javascript
使用webpack搭建vue项目实现脚手架功能
Mar 15 Javascript
Vue3.0中的monorepo管理模式的实现
Oct 14 Javascript
Vue学习之axios的使用方法实例分析
Jan 06 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
文件系统基本操作类
2006/11/23 PHP
php中的观察者模式简单实例
2015/01/20 PHP
PHP开发注意事项总结
2015/02/04 PHP
PHP+Javascript实现在线拍照功能实例
2015/07/18 PHP
PHP实现登录搜狐广告获取广告联盟数据的方法【附demo源码】
2016/10/14 PHP
Thinkphp实现短信验证注册功能
2016/10/18 PHP
thinkPHP中session()方法用法详解
2016/12/08 PHP
Laravel获取所有的数据库表及结构的方法
2019/10/10 PHP
javascript encodeURI和encodeURIComponent的比较
2010/04/03 Javascript
Script的加载方法小结
2011/01/12 Javascript
一次失败的jQuery优化尝试小结
2011/02/06 Javascript
JQuery跳出each循环的方法
2015/04/16 Javascript
全面了解js中的script标签
2016/07/04 Javascript
JS实现图片剪裁并预览效果
2016/08/12 Javascript
canvas滤镜效果实现代码
2017/02/06 Javascript
node.js中grunt和gulp的区别详解
2017/07/17 Javascript
JS获取日期的方法实例【昨天,今天,明天,前n天,后n天的日期】
2017/09/28 Javascript
在vue项目中,将juery设置为全局变量的方法
2018/09/25 Javascript
JS判断数组四种实现方法详解
2020/06/29 Javascript
javascript贪吃蛇游戏设计与实现
2020/09/17 Javascript
在Python中使用base64模块处理字符编码的教程
2015/04/28 Python
python线程中同步锁详解
2018/04/27 Python
Python 打印中文字符的三种方法
2018/08/14 Python
老生常谈python中的重载
2018/11/11 Python
django 类视图的使用方法详解
2019/07/24 Python
Python数据处理篇之Sympy系列(五)---解方程
2019/10/12 Python
pycharm如何设置官方中文(如何汉化)
2020/12/29 Python
小女主人连衣裙:Little Mistress
2017/07/10 全球购物
adidas马来西亚官网:adidas MY
2020/09/12 全球购物
恐龙的灭绝教学反思
2014/02/12 职场文书
普通简短的个人自我评价
2014/02/15 职场文书
学校重阳节活动总结
2015/03/24 职场文书
入党转正申请报告
2015/05/15 职场文书
nginx反向代理时如何保持长连接
2021/03/31 Servers
Python代码风格与编程习惯重要吗?
2021/06/03 Python
Java字符串逆序方法详情
2022/03/21 Java/Android