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 分栏效果实现代码
Aug 29 Javascript
JQuery AJAX提交中文乱码的解决方案
Jul 02 Javascript
复选框全选与全不选操作实现思路
Aug 18 Javascript
JavaScript数组深拷贝和浅拷贝的两种方法
Apr 16 Javascript
实例解析jQuery插件EasyUI最常用的表单验证规则
Nov 29 Javascript
JS中的eval 为什么加括号
Apr 13 Javascript
jQuery插件AjaxFileUpload实现ajax文件上传
May 05 Javascript
jQuery AJAX timeout 超时问题详解
Jun 21 Javascript
js防阻塞加载的实现方法
Sep 09 Javascript
AngularJS实现与Java Web服务器交互操作示例【附demo源码下载】
Nov 02 Javascript
JS script脚本中async和defer区别详解
Jun 24 Javascript
vue实现购物车的小练习
Dec 21 Vue.js
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 伪造本地文件包含漏洞的代码
2011/11/03 PHP
匹配csdn用户数据库与官方用户的重合度并将重叠部分的用户筛选出来
2011/12/25 PHP
PHP中常用的转义函数
2014/02/28 PHP
PHP独立Session数据库存储操作类分享
2014/06/11 PHP
PHP批量删除jQuery操作
2017/07/23 PHP
详解PHP如何更好的利用PHPstorm的自动提示
2017/08/18 PHP
Node.js模拟浏览器文件上传示例
2014/03/26 Javascript
Javascript玩转继承(一)
2014/05/08 Javascript
jquery动态添加删除一行数据示例
2014/06/12 Javascript
使用不同的方法结合/合并两个JS数组
2014/09/18 Javascript
JS实现仿新浪微博发布内容为空时提示功能代码
2015/08/19 Javascript
jQuery实现Email邮箱地址自动补全功能代码
2015/11/03 Javascript
JS组件系列之Bootstrap table表格组件神器【二、父子表和行列调序】
2016/05/10 Javascript
微信小程序 video组件详解
2016/10/25 Javascript
ExtJs异步无法向外传值和赋值的完美解决办法
2017/06/14 Javascript
浅析vue 函数配置项watch及函数 $watch 源码分享
2018/11/22 Javascript
[04:01]2014DOTA2国际邀请赛 TITAN告别Ohaiyo期望明年再战
2014/07/15 DOTA
python中常用的各种数据库操作模块和连接实例
2014/05/29 Python
python如何生成各种随机分布图
2018/08/27 Python
Python弹出输入框并获取输入值的实例
2019/06/18 Python
Python实现的对一个数进行因式分解操作示例
2019/06/27 Python
关于numpy中eye和identity的区别详解
2019/11/29 Python
PyCharm下载和安装详细步骤
2019/12/17 Python
tensorflow中tf.slice和tf.gather切片函数的使用
2020/01/19 Python
python图形开发GUI库wxpython使用方法详解
2020/02/14 Python
如何使用python代码操作git代码
2020/02/29 Python
opencv-python的RGB与BGR互转方式
2020/06/02 Python
python实现sm2和sm4国密(国家商用密码)算法的示例
2020/09/26 Python
美国礼品卡商城: Gift Card Mall
2017/08/25 全球购物
关联、聚合(Aggregation)以及组合(Composition)的区别
2012/02/29 面试题
法律工作求职自荐信
2013/10/31 职场文书
广告业务员岗位职责
2014/02/06 职场文书
入股协议书范本
2014/11/01 职场文书
2015年食堂工作总结报告
2015/04/23 职场文书
2015年幼儿园教育教学工作总结
2015/05/25 职场文书
mysql死锁和分库分表问题详解
2021/04/16 MySQL