js 事件的传播机制(实例讲解)


Posted in Javascript onJuly 20, 2017

事件的默认传播机制:

捕获阶段:从外向里依次查找元素

目标阶段:从当前事件源本身的操作

冒泡阶段:从内到外依次触发相关的行为(我们最常用的就是冒泡阶段)

具体见下图:

js 事件的传播机制(实例讲解)

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <style>
    #outer{
      margin:20px auto;
      padding:20px;
      width:300px;
      height:300px;
      background:#008000;
    }
    #inner{
      padding:20px;
      width:200px;
      height:200px;
      background:blue;
    }
    #center{
      padding:20px;
      width:100px;
      height:100px;
      background:yellow;
    }
  </style>
</head>
<body>
  <div id='outer'>
    <div id='inner'>
      <div id='center'></div>
    </div>
  </div>
  <script>
    var outer = document.getElementById('outer'),inner = document.getElementById('inner'),center = document.getElementById('center');
    //使用DOM0级事件绑定给元素的某一个行为绑定的方法,都是在行为触发后的冒泡阶段把方法执行的
    document.body.onclick = function(){
      console.log('body')
    }
    outer.onclick = function(){
      console.log('outer')
    }
    inner.onclick = function(){
      console.log('inner')
    }
    center.onclick = function(){
      console.log('center')
    }

    //addEventListener 第一个参数是行为的类型 第二个参数是给当前的行为定义的方法 第三个参数是控制在哪个阶段发生:true 在捕获阶段发生 false在冒泡阶段发生
    document.body.addEventListener('click',function(){
      console.log('body')
    },false)
    outer.addEventListener('click',function(){
      console.log('outer')
    },true)
    inner.addEventListener('click',function(){
      console.log('inner')
    },false)

    //输出 outer inner body
  </script>
</body>
</html>

以上这篇js 事件的传播机制(实例讲解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery 性能优化指南(2)
May 21 Javascript
EASYUI TREEGRID异步加载数据实现方法
Aug 22 Javascript
JS 操作Array数组的方法及属性实例解析
Jan 08 Javascript
js toFixed()方法的重写实现精度的统一
Mar 06 Javascript
非jQuery实现照片散落桌子上,单击放大的LightBox效果
Nov 28 Javascript
javascript bom是什么及bom和dom的区别
Nov 26 Javascript
Bootstrap jquery.twbsPagination.js动态页码分页实例代码
Feb 20 Javascript
Vue实现选择城市功能
May 27 Javascript
webpack使用 babel-loader 转换 ES6代码示例
Aug 21 Javascript
微信小程序获取用户openid的实现
Dec 24 Javascript
vue动态配置模板 'component is'代码
Jul 04 Javascript
js如何获取访问IP、地区、当前操作浏览器
Jul 23 Javascript
详谈for循环里面的break和continue语句
Jul 20 #Javascript
js is_valid_filename验证文件名的函数
Jul 19 #Javascript
vue Render中slots的使用的实例代码
Jul 19 #Javascript
详解vue前后台数据交互vue-resource文档
Jul 19 #Javascript
解决vue router使用 history 模式刷新后404问题
Jul 19 #Javascript
深入理解vue Render函数
Jul 19 #Javascript
Vue AST源码解析第一篇
Jul 19 #Javascript
You might like
ThinkPHP访问不存在的模块跳转到404页面的方法
2014/06/19 PHP
取得单条网站评论以数组形式进行输出
2014/07/28 PHP
Yii框架在页面输出执行sql语句以方便调试的实现方法
2014/12/24 PHP
使用PHP实现阻止用户上传成人照片或者裸照
2014/12/25 PHP
PHP mysqli事务操作常用方法分析
2017/07/22 PHP
php使用Swoole实现毫秒级定时任务的方法
2020/09/04 PHP
利用腾讯的ip地址库做ip物理地址定位
2010/07/24 Javascript
js中关于String对象的replace使用详解
2011/05/24 Javascript
FF火狐下获取一个元素同类型的相邻元素实现代码
2012/12/15 Javascript
jquery鼠标放上去显示悬浮层即弹出定位的div层
2014/04/25 Javascript
浅谈javascript语法和定时函数
2015/05/03 Javascript
js实现的简洁网页滑动tab菜单效果代码
2015/08/24 Javascript
JS针对浏览器窗口关闭事件的监听方法集锦
2016/06/24 Javascript
JS实现的简单拖拽功能示例
2017/03/13 Javascript
详解Angular2中Input和Output用法及示例
2017/05/21 Javascript
微信小程序实现YDUI的ScrollTab组件
2018/02/02 Javascript
使用ngrok+express解决本地环境中微信接口调试问题
2018/02/26 Javascript
基于bootstrap页面渲染的问题解决方法
2018/08/09 Javascript
node.js调用C++函数的方法示例
2018/09/21 Javascript
小程序实现列表点赞功能
2018/11/02 Javascript
Node.js API详解之 os模块用法实例分析
2020/05/06 Javascript
vue项目开启Gzip压缩和性能优化操作
2020/10/26 Javascript
[01:16:16]DOTA2-DPC中国联赛定级赛 RNG vs Phoenix BO3第二场 1月8日
2021/03/11 DOTA
举例讲解Python中的死锁、可重入锁和互斥锁
2015/11/05 Python
Django入门使用示例
2017/12/12 Python
Python 处理图片像素点的实例
2019/01/08 Python
python列表切片和嵌套列表取值操作详解
2020/02/27 Python
Smashbox官网:美国知名彩妆品牌
2017/01/05 全球购物
美国男士和女士奢侈品折扣手表购物网站:Certified Watch Store
2018/06/13 全球购物
Juice Beauty官网:有机美容产品,护肤与化妆品
2020/06/13 全球购物
网络工程专业毕业生推荐信
2013/10/28 职场文书
道路建设实施方案
2014/03/18 职场文书
综合办公室岗位职责
2015/04/11 职场文书
建立共青团委员会的请示
2019/04/02 职场文书
Nginx配置并兼容HTTP实现代码解析
2021/03/31 Servers
Python代码实现双链表
2022/05/25 Python