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简单体验
Jan 10 Javascript
javascript 实现父窗口引用弹出窗口的值的脚本
Aug 07 Javascript
JQuery实现点击div以外的位置隐藏该div窗口
Sep 13 Javascript
简单时间提示DEMO从0开始一直进行计时
Nov 19 Javascript
如何让你的Lightbox支持滚轮缩放及Base64图片
Dec 04 Javascript
jQuery实现列表内容的动态载入特效
Aug 08 Javascript
JavaScript实现数组降维详解
Jan 05 Javascript
jQuery插件FusionCharts实现的Marimekko图效果示例【附demo源码】
Mar 24 jQuery
node.js连接MongoDB数据库的2种方法教程
May 17 Javascript
监听element-ui table滚动事件的方法
Mar 26 Javascript
node.JS路径解析之PATH模块使用方法详解
Feb 06 Javascript
通过高德地图API获得某条道路上的所有坐标用于描绘道路的方法
Aug 24 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 快速排序算法详解
2014/11/10 PHP
jQuery 入门讲解1
2009/04/15 Javascript
jQuery+CSS 半开折叠效果原理及代码(自写)
2013/03/04 Javascript
利用了jquery的ajax实现二级联互动菜单
2013/12/02 Javascript
简单的jQuery入门指引
2015/07/28 Javascript
基于js实现投票的实例代码
2015/08/04 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(一)
2015/12/10 Javascript
再次谈论React.js实现原生js拖拽效果引起的一系列问题
2016/04/03 Javascript
ES6新特性之模块Module用法详解
2017/04/01 Javascript
Webpack如何引入bootstrap的方法
2017/06/17 Javascript
JavaSctit 利用FileReader和滤镜上传图片预览功能
2017/09/05 Javascript
微信上传视频文件提示(推荐)
2018/11/22 Javascript
vue cli3.0结合echarts3.0与地图的使用方法示例
2019/03/26 Javascript
jQuery实现点击滚动到指定元素上的方法分析
2020/03/19 jQuery
[50:45]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs TNC 第一场
2018/04/10 DOTA
[14:21]VICI vs EG (BO3)
2018/06/07 DOTA
[01:18:45]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第三场2月1日
2021/03/11 DOTA
Python高级应用实例对比:高效计算大文件中的最长行的长度
2014/06/08 Python
用Python3创建httpServer的简单方法
2018/06/04 Python
python基础梳理(一)(推荐)
2019/04/06 Python
Python 实现交换矩阵的行示例
2019/06/26 Python
Django的用户模块与权限系统的示例代码
2019/07/24 Python
Jupyter Notebook 文件默认目录的查看以及更改步骤
2020/04/14 Python
搭建pypi私有仓库实现过程详解
2020/11/25 Python
Python实现PS滤镜中的USM锐化效果
2020/12/04 Python
谈一谈HTML5本地存储技术
2016/03/02 HTML / CSS
全球最大的网上自行车商店:Chain Reaction Cycles
2016/12/02 全球购物
澳大利亚制造的蜡烛和扩散器:Glasshouse Fragrances
2018/05/20 全球购物
诺心蛋糕官网:LE CAKE
2018/08/25 全球购物
出国留学自荐信
2013/10/25 职场文书
餐饮管理自我介绍信
2014/01/15 职场文书
酒店采购员岗位职责
2014/03/14 职场文书
计算机专业毕业生求职信
2014/04/30 职场文书
运动会演讲稿50字
2014/08/25 职场文书
2014第二批党员干部对照“四风”找差距检查材料思想汇报
2014/09/18 职场文书
SQL注入详解及防范方法
2021/12/06 MySQL