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 相关文章推荐
jquery tablesorter.js 支持中文表格排序改进
Dec 09 Javascript
基于jquery的无缝循环新闻列表插件
Mar 07 Javascript
JavaScript执行顺序详细介绍
Dec 04 Javascript
Node.js中使用Buffer编码、解码二进制数据详解
Aug 16 Javascript
jQuery实现指定内容滚动同时左侧或其它地方不滚动的方法
Aug 08 Javascript
详解javascript实现自定义事件
Jan 19 Javascript
js实现页面跳转的五种方法推荐
Mar 10 Javascript
javascript设计模式之模块模式学习笔记
Feb 15 Javascript
Vue实现用户自定义字段显示数据的方法
Aug 28 Javascript
vue 的 solt 子组件过滤过程解析
Sep 07 Javascript
JavaScript canvas基于数组生成柱状图代码实例
Mar 06 Javascript
浅谈实现在线预览PDF的几种解决办法
Aug 10 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
ThinkPHP处理Ajax返回的方法
2014/11/22 PHP
php从给定url获取文件扩展名的方法
2015/03/14 PHP
PHP简单实现断点续传下载的方法
2015/09/25 PHP
PHP下载文件的函数实例代码
2016/05/18 PHP
Yii多表联合查询操作详解
2016/06/02 PHP
Thinkphp5结合layer弹窗定制操作结果页面
2017/07/07 PHP
thinkPHP框架自动填充原理与用法分析
2018/04/03 PHP
IE下使用jQuery重置iframe地址时内存泄露问题解决办法
2015/02/05 Javascript
js实现不提交表单获取单选按钮值的方法
2015/08/21 Javascript
JS实现弹性菜单效果代码
2015/09/07 Javascript
如何实现移动端浏览器不显示 pc 端的广告
2015/10/15 Javascript
日常收藏的jquery技巧
2015/12/02 Javascript
基于Angularjs+mybatis实现二级评论系统(仿简书)
2017/02/13 Javascript
jQuery实现html双向绑定功能示例
2017/10/09 jQuery
Angular 向组件传递模板的两种方法
2018/02/23 Javascript
JS实现同一DOM元素上onClick事件与onDblClick事件并存的解决方法
2018/06/07 Javascript
tweenjs缓动算法的使用实例分析
2019/08/26 Javascript
微信小程序仿通讯录功能
2020/04/09 Javascript
详解vue-router的Import异步加载模块问题的解决方案
2020/05/13 Javascript
JS实现简单打字测试
2020/06/24 Javascript
python发送邮件的实例代码(支持html、图片、附件)
2013/03/04 Python
Python中用max()方法求最大值的介绍
2015/05/15 Python
Python抓取淘宝下拉框关键词的方法
2015/07/08 Python
Python实现读取邮箱中的邮件功能示例【含文本及附件】
2017/08/05 Python
python3+PyQt5实现自定义分数滑块部件
2018/04/24 Python
Jacobi迭代算法的Python实现详解
2019/06/29 Python
解决Pytorch自定义层出现多Variable共享内存错误问题
2020/06/28 Python
Chain Reaction Cycles芬兰:世界上最大的在线自行车商店
2017/12/06 全球购物
大学生职业生涯规划书模板
2014/01/18 职场文书
本科毕业生自荐信
2014/06/02 职场文书
2015年度团总支工作总结
2015/04/23 职场文书
证劵公司反洗钱宣传活动总结
2015/05/08 职场文书
小学班级管理心得体会
2016/01/07 职场文书
《我是什么》教学反思
2016/02/16 职场文书
Python 文本滚动播放器的实现代码
2021/04/25 Python
Redis 哨兵集群的实现
2021/06/18 Redis