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 相关文章推荐
2007/12/23更新创意无限,简单实用(javascript log)
Dec 24 Javascript
Dom加载让图片加载完再执行的脚本代码
May 15 Javascript
Prototype 学习 工具函数学习($A方法)
Jul 12 Javascript
javascript 同时在IE和FireFox获取KeyCode的代码
Feb 07 Javascript
jquery(live)中File input的change方法只起一次作用的解决办法
Oct 21 Javascript
jQuery简单实现图片预加载
Apr 20 Javascript
javascript中的 object 和 function小结
Aug 14 Javascript
JavaScript微信定位功能实现方法
Nov 29 Javascript
js定时器实例分享
Dec 20 Javascript
关于vue-router的那些事儿
May 23 Javascript
react build 后打包发布总结
Aug 24 Javascript
JS中min函数实例讲解
Feb 18 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 判断访客是否为搜索引擎蜘蛛的函数代码
2011/07/29 PHP
PHP 在5.1.* 和5.2.*之间 PDO数据库操作中的不同之处小结
2012/03/07 PHP
浅谈PHP的反射机制
2016/12/15 PHP
php实现的rc4加密解密类定义与用法示例
2018/08/16 PHP
jquery的父子兄弟节点查找示例代码
2014/03/03 Javascript
jQuery实现table隔行换色和鼠标经过变色的两种方法
2014/06/15 Javascript
JQuery实现展开关闭层的方法
2015/02/17 Javascript
把Node.js程序加入服务实现随机启动
2015/06/25 Javascript
基于javascript实现表格的简单操作
2016/05/21 Javascript
Bootstrap菜单按钮及导航实例解析
2016/09/09 Javascript
浅谈JavaScript的自动垃圾收集机制
2016/12/15 Javascript
简单的Vue异步组件实例Demo
2017/12/27 Javascript
react 实现页面代码分割、按需加载的方法
2018/04/03 Javascript
PM2自动部署代码步骤流程总结
2018/12/10 Javascript
微信小程序select下拉框实现效果
2019/05/15 Javascript
jquery实现烟花效果(面向对象)
2020/03/10 jQuery
vue 计算属性和侦听器的使用小结
2021/01/25 Vue.js
[05:02]2014DOTA2 TI中国区预选赛精彩TOPPLAY第三弹
2014/06/25 DOTA
[35:34]Liquid vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[01:11:21]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第三场 3月7日
2021/03/11 DOTA
在Python中使用defaultdict初始化字典以及应用方法
2018/10/31 Python
Python 使用 attrs 和 cattrs 实现面向对象编程的实践
2019/06/12 Python
Python爬取知乎图片代码实现解析
2019/09/17 Python
Pytorch 定义MyDatasets实现多通道分别输入不同数据方式
2020/01/15 Python
python+selenium 脚本实现每天自动登记的思路详解
2020/03/11 Python
Python如何使用vars返回对象的属性列表
2020/10/17 Python
python集合的新增元素方法整理
2020/12/07 Python
CK巴西官方网站:Calvin Klein巴西
2019/07/19 全球购物
在对linux系统分区进行格式化时需要对磁盘簇(或i节点密度)的大小进行选择,请说明选择的原则
2012/11/24 面试题
Java中采用什么结构来捕获、处理异常?各子句的顺序、功能如何
2013/10/07 面试题
外贸业务员岗位职责
2013/11/24 职场文书
阳光体育活动实施方案
2014/05/25 职场文书
给老师的一封感谢信
2015/01/20 职场文书
中学生打架《检讨书》范文
2019/08/12 职场文书
使用CSS实现小三角边框原理解析
2021/11/07 HTML / CSS
Python中的 enumerate和zip详情
2022/05/30 Python