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 相关文章推荐
关于JavaScript中var声明变量作用域的推断
Dec 16 Javascript
基于node.js的快速开发透明代理
Dec 25 Javascript
将HTMLCollection/NodeList/伪数组转换成数组的实现方法
Jun 20 Javascript
超炫的jquery仿flash导航栏特效
Nov 11 Javascript
测试IE浏览器对JavaScript的AngularJS的兼容性
Jun 19 Javascript
基于javascript实现泡泡大冒险网页版小游戏
Mar 23 Javascript
js智能获取浏览器版本UA信息的方法
Aug 08 Javascript
jQuery实现简单复制json对象和json对象集合操作示例
Jul 09 jQuery
vue使用rem实现 移动端屏幕适配
Sep 26 Javascript
Openlayers学习之地图比例尺控件
Sep 28 Javascript
javascript实现放大镜功能
Dec 09 Javascript
js回到页面指定位置的三种方式
Dec 17 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
用PHP实现多服务器共享SESSION数据的方法
2007/03/16 PHP
php邮件发送,php发送邮件的类
2011/03/24 PHP
PHP隐形一句话后门,和ThinkPHP框架加密码程序(base64_decode)
2011/11/02 PHP
PHP 如何利用phpexcel导入数据库
2013/08/24 PHP
php文件上传的两种实现方法
2016/04/04 PHP
PHP多维数组排序array详解
2017/11/21 PHP
ExtJS Store的数据访问与更新问题
2010/04/28 Javascript
Javascript base64编码实现代码
2011/12/02 Javascript
图片动画横条广告带上下滚动可自定义图片、链接等等
2013/10/20 Javascript
JS实现弹出浮动窗口(支持鼠标拖动和关闭)实例详解
2015/08/06 Javascript
jQuery实现的背景动态变化导航菜单效果
2015/08/24 Javascript
jQuery实现布局高宽自适应的简单实例
2016/05/28 Javascript
微信小程序 wx:key详细介绍
2016/10/28 Javascript
Jquery与Bootstrap实现后台管理页面增删改查功能示例
2017/01/22 Javascript
浅谈js中同名函数和同名变量的执行问题
2017/02/12 Javascript
Django1.7+JQuery+Ajax验证用户注册集成小例子
2017/04/08 jQuery
微信小程序教程系列之视图层的条件渲染(10)
2017/04/19 Javascript
JavaScript中undefined和null的区别
2017/05/03 Javascript
利用types增强vscode中js代码提示功能详解
2017/07/07 Javascript
Vue+Element使用富文本编辑器的示例代码
2017/08/14 Javascript
jquery动态添加带有样式的HTML标签元素方法
2018/02/24 jQuery
使用layui+ajax实现简单的菜单权限管理及排序的方法
2019/09/10 Javascript
用Python的SimPy库简化复杂的编程模型的介绍
2015/04/13 Python
python实现生成字符串大小写字母和数字的各种组合
2019/01/01 Python
pygame用blit()实现动画效果的示例代码
2020/05/28 Python
Python CSS选择器爬取京东网商品信息过程解析
2020/06/01 Python
Feelunique德国官方网站:欧洲最大的在线美容零售商
2019/07/20 全球购物
Pureology官网:为染色头发打造最好的产品
2019/09/13 全球购物
世界上最伟大的马产品:Equiderma
2020/01/07 全球购物
Moda Operandi官网:美国奢侈品电商,海淘秀场T台同款
2020/05/26 全球购物
大二自我鉴定范文
2013/10/05 职场文书
小学语文教学反思
2014/02/10 职场文书
升学宴主持词
2014/04/02 职场文书
金砖之国观后感
2015/06/11 职场文书
100句拼搏进取的名言警句,值得一读!
2019/10/07 职场文书
使用nginx动态转换图片大小生成缩略图
2021/03/31 Servers