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插件
Nov 24 Javascript
javascript入门基础之私有变量
Feb 23 Javascript
jQuery代码优化 遍历篇
Nov 01 Javascript
js实现select组件的选择输入过滤代码
Oct 14 Javascript
js转html实体的方法
Sep 27 Javascript
jquery实现文本框的禁用和启用
Dec 07 Javascript
JS实现上传图片的三种方法并实现预览图片功能
Jul 14 Javascript
Vue 配合eiement动态路由,权限验证的方法
Sep 26 Javascript
vue实现分环境打包步骤(给不同的环境配置相对应的打包命令)
Jun 04 Javascript
JS实现利用闭包判断Dom元素和滚动条的方向示例
Aug 26 Javascript
如何将Node.js中的回调转换为Promise
Nov 10 Javascript
详解Vue的options
May 15 Vue.js
详谈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中读写文件与读写数据库的效率比较分享
2013/10/19 PHP
Drupal7 form表单二次开发要点与实例
2014/03/02 PHP
PHP类中的魔术方法(Magic Method)简明总结
2014/07/08 PHP
ThinkPHP水印功能实现修复PNG透明水印并增加JPEG图片质量可调整
2014/11/05 PHP
js中获取事件对象的方法小结
2011/03/13 Javascript
JQuery对id中含有特殊字符的转义处理示例
2013/09/06 Javascript
对于this和$(this)的个人理解
2013/09/08 Javascript
浅析用prototype定义自己的方法
2013/11/14 Javascript
JS实现闪动的title消息提醒效果
2014/06/20 Javascript
JS递归遍历对象获得Value值方法技巧
2016/06/14 Javascript
JavaScript制作简单分页插件
2016/09/11 Javascript
jquery表单插件form使用方法详解
2017/01/20 Javascript
Node.js利用js-xlsx处理Excel文件的方法详解
2017/07/05 Javascript
p5.js 毕达哥拉斯树的实现代码
2018/03/23 Javascript
JS实现监控微信小程序的原理
2018/06/15 Javascript
原生JS实现的放大镜特效示例【测试可用】
2018/12/08 Javascript
arctext.js实现文字平滑弯曲弧形效果的插件
2019/05/13 Javascript
基于 Vue 的 Electron 项目搭建过程图文详解
2020/07/22 Javascript
vue+springboot+element+vue-resource实现文件上传教程
2020/10/21 Javascript
[01:24]2014DOTA2 TI第二日 YYF表示这届谁赢都有可能
2014/07/11 DOTA
python连接MySQL、MongoDB、Redis、memcache等数据库的方法
2013/11/15 Python
使用优化器来提升Python程序的执行效率的教程
2015/04/02 Python
详解Python设计模式编程中观察者模式与策略模式的运用
2016/03/02 Python
Python编程实现的简单神经网络算法示例
2018/01/26 Python
python烟花效果的代码实例
2020/02/25 Python
Django admin 实现search_fields精确查询实例
2020/03/30 Python
jupyter 中文乱码设置编码格式 避免控制台输出的解决
2020/04/20 Python
python TCP包注入方式
2020/05/05 Python
Pycharm插件(Grep Console)自定义规则输出颜色日志的方法
2020/05/27 Python
物流管理专业职业生涯规划书
2014/01/06 职场文书
绩效管理实施方案
2014/03/19 职场文书
敬老院院长事迹材料
2014/05/21 职场文书
领导干部作风整顿个人剖析材料
2014/10/11 职场文书
教你漂亮打印Pandas DataFrames和Series
2021/05/29 Python
Python还能这么玩之用Python做个小游戏的外挂
2021/06/04 Python
CSS中使用grid布局实现一套模板多种布局
2022/07/15 HTML / CSS