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 相关文章推荐
AJAX的跨域与JSONP(为文章自动添加短址的功能)
Jan 17 Javascript
跨浏览器开发经验总结(四) 怎么写入剪贴板
May 13 Javascript
extjs 初始化checkboxgroup值的代码
Sep 21 Javascript
JavaScript分页功能的实现方法
Apr 25 Javascript
基于javascript实现按圆形排列DIV元素(二)
Dec 02 Javascript
解决html-jquery/js引用外部图片时遇到看不了或出现403的问题
Sep 22 jQuery
VUE2 前端实现 静态二级省市联动选择select的示例
Feb 09 Javascript
小程序获取周围IBeacon设备的方法
Oct 31 Javascript
JavaScript中.min.js和.js文件的区别讲解
Feb 13 Javascript
vue.js中ref和$refs的使用及示例讲解
Aug 14 Javascript
vue中的计算属性和侦听属性
Nov 06 Javascript
微信小程序实现日历小功能
Nov 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函数
2006/10/09 PHP
下拉列表多级联动dropDownList示例代码
2013/06/27 PHP
php简单实现屏蔽指定ip段用户的访问
2015/04/29 PHP
PHP register_shutdown_function()函数的使用示例
2015/06/23 PHP
详解thinkphp中的volist标签
2018/01/15 PHP
Jquery 获得服务器控件值的方法小结
2010/05/11 Javascript
JavaScript/jQuery 表单美化插件小结
2012/02/14 Javascript
JavaScript闭包实例讲解
2014/04/22 Javascript
一个小例子解释如何来阻止Jquery事件冒泡
2014/07/17 Javascript
jQuery中ajax和post处理json的不同示例对比
2014/11/02 Javascript
推荐4个原生javascript常用的函数
2015/01/12 Javascript
网页收藏夹显示ICO图标(代码少)
2015/08/04 Javascript
jquery 获取select数组与name数组长度的实现代码
2016/06/20 Javascript
jQuery实现二维码扫描功能
2017/01/09 Javascript
Node.js与Sails redis组件的使用教程
2017/02/14 Javascript
webpack 2.x配置reactjs基本开发环境详解
2017/08/08 Javascript
javascript观察者模式实现自动刷新效果
2017/09/05 Javascript
JavaScript实现简单生成随机颜色的方法
2017/09/21 Javascript
jQuery 同时获取多个标签的指定内容并储存为数组
2018/11/20 jQuery
JS闭包经典实例详解
2018/12/20 Javascript
Python多线程实例教程
2014/09/06 Python
简介二分查找算法与相关的Python实现示例
2015/08/26 Python
Django查询数据库的性能优化示例代码
2017/09/24 Python
python使用参数对嵌套字典进行取值的方法
2019/04/26 Python
Python读写文件基础知识点
2019/06/10 Python
python 批量解压压缩文件的实例代码
2019/06/27 Python
春节到了 教你使用python来抢票回家
2020/01/06 Python
pycharm 的Structure界面设置操作
2021/02/05 Python
CSS3中Animation属性的使用详解
2015/08/06 HTML / CSS
普通PHP程序员笔试题
2016/01/01 面试题
strstr()的简单实现
2013/09/26 面试题
什么是数组名
2012/05/10 面试题
Python实战之实现康威生命游戏
2021/04/26 Python
深入解析MySQL索引数据结构
2021/10/16 MySQL
一文带你探究MySQL中的NULL
2021/11/11 MySQL
mysql如何查询连续记录
2022/05/11 MySQL