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在IE和FireFox中的不同表现简析
Dec 03 Javascript
通过jQuery源码学习javascript(二)
Dec 27 Javascript
javaScript(JS)替换节点实现思路介绍
Apr 17 Javascript
js中数组Array的一些常用方法总结
Aug 12 Javascript
再探JavaScript作用域
Sep 24 Javascript
jquery插件validation实现验证身份证号等
Jun 04 Javascript
jquery实现两个图片渐变切换效果的方法
Jun 25 Javascript
bootstrap快速制作后台界面
Dec 05 Javascript
js 原生判断内容区域是否滚动到底部的实例代码
Nov 15 Javascript
解析Angular 2+ 样式绑定方式
Jan 15 Javascript
Vue的路由及路由钩子函数的实现
Jul 02 Javascript
webpack中的模式(mode)使用详解
Feb 20 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 获取MSN好友列表的代码(2009-05-14测试通过)
2009/09/09 PHP
使用php语句将数据库*.sql文件导入数据库
2014/05/05 PHP
js常见表单应用技巧
2008/01/09 Javascript
jQuery 1.5 源码解读 面向中高阶JSER
2011/04/05 Javascript
5秒后跳转效果(setInterval/SetTimeOut)
2013/05/03 Javascript
Javascript表单验证要注意的事项
2014/09/29 Javascript
浅析AngularJS中的生命周期和延迟处理
2015/06/18 Javascript
详解JavaScript编程中正则表达式的使用
2015/10/25 Javascript
给angular加上动画效遇到的问题总结
2016/02/17 Javascript
JavaScript接口的实现三种方式(推荐)
2016/06/14 Javascript
js生成随机数(指定范围)的实例代码
2016/07/10 Javascript
浅谈Javascript数据属性与访问器属性
2016/07/26 Javascript
jquery结合html实现中英文页面切换
2016/11/29 Javascript
jQuery插件zTree实现获取当前选中节点在同级节点中序号的方法
2017/03/08 Javascript
VUE v-for循环中每个item节点动态绑定不同函数的实例
2018/09/26 Javascript
JS实现给数组对象排序的方法分析
2019/06/24 Javascript
详解小程序如何改变onLoad的执行时机
2019/11/01 Javascript
[03:46]DOTA2英雄基础教程 维萨吉
2013/12/11 DOTA
Python实现的生成自我描述脚本分享(很有意思的程序)
2014/07/18 Python
python通过字典dict判断指定键值是否存在的方法
2015/03/21 Python
Python中条件判断语句的简单使用方法
2015/08/21 Python
windows 10下安装搭建django1.10.3和Apache2.4的方法
2017/04/05 Python
python中numpy.zeros(np.zeros)的使用方法
2017/11/07 Python
对pycharm代码整体左移和右移缩进快捷键的介绍
2018/07/16 Python
对numpy中向量式三目运算符详解
2018/10/31 Python
python 使用paramiko模块进行封装,远程操作linux主机的示例代码
2020/12/03 Python
大学校园毕业自我鉴定
2014/01/15 职场文书
黄金搭档广告词
2014/03/21 职场文书
后勤管理员岗位职责
2014/08/27 职场文书
2014年财务工作自我评价
2014/09/23 职场文书
学习走群众路线心得体会
2014/11/05 职场文书
债务纠纷代理词
2015/05/25 职场文书
python中pandas.read_csv()函数的深入讲解
2021/03/29 Python
MySQL如何构建数据表索引
2021/05/13 MySQL
Java如何实现树的同构?
2021/06/22 Java/Android
Java 数组的使用
2022/05/11 Java/Android