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 相关文章推荐
共享自己写一个框架DreamScript
Jan 20 Javascript
Jsonp 跨域的原理以及Jquery的解决方案
May 18 Javascript
再说AutoComplete自动补全之实现原理
Nov 05 Javascript
JS控制按钮10秒钟后可用的方法
Dec 22 Javascript
jQuery ajax请求返回list数据动态生成input标签,并把list数据赋值到input标签
Mar 29 Javascript
JavaScript 数组中最大最小值
Jun 05 Javascript
js 原型对象和原型链理解
Feb 09 Javascript
jQuery中绑定事件bind() on() live() one()的异同
Feb 23 Javascript
JavaScript数组迭代方法
Mar 03 Javascript
JavaScript错误处理操作实例详解
Jan 04 Javascript
layer.alert自定义关闭回调事件的方法
Sep 27 Javascript
微信小程序中网络请求缓存的解决方法
Dec 29 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 strnatcmp()函数的用法总结
2013/11/27 PHP
字符串长度函数strlen和mb_strlen的区别示例介绍
2014/09/09 PHP
浅谈thinkphp的实例化模型
2015/01/04 PHP
PHP开发注意事项总结
2015/02/04 PHP
php封装好的人民币数值转中文大写类
2015/12/20 PHP
php版微信数据统计接口用法示例
2016/10/12 PHP
php实现文件管理与基础功能操作
2017/03/21 PHP
PHP实现类似题库抽题效果
2018/08/16 PHP
3kb jQuery代码搞定各种树形选择的实现方法
2016/06/10 Javascript
浅谈JavaScript的全局变量与局部变量
2016/06/10 Javascript
jQuery解析XML 详解及方法总结
2016/09/28 Javascript
原生JS获取元素集合的子元素宽度实例
2016/12/14 Javascript
基于jQuery实现左侧菜单栏可折叠功能
2016/12/27 Javascript
React实现点击删除列表中对应项
2017/01/10 Javascript
详解在Angularjs中ui-sref和$state.go如何传递参数
2017/04/24 Javascript
vue与vue-i18n结合实现后台数据的多语言切换方法
2018/03/08 Javascript
JavaScript闭包原理与用法实例分析
2018/08/10 Javascript
详解Eslint 配置及规则说明
2018/09/10 Javascript
你了解vue3.0响应式数据怎么实现吗
2019/06/07 Javascript
jquery添加div实现消息聊天框
2020/02/08 jQuery
小程序实现多个选项卡切换
2020/06/19 Javascript
[51:11]2014 DOTA2国际邀请赛中国区预选赛5.21 LGD-CDEC VS DT
2014/05/22 DOTA
Python中Continue语句的用法的举例详解
2015/05/14 Python
python通过apply使用元祖和列表调用函数实例
2015/05/26 Python
pycharm 实现显示project 选项卡的方法
2019/01/17 Python
django云端留言板实例详解
2019/07/22 Python
浅析PyTorch中nn.Module的使用
2019/08/18 Python
python科学计算之narray对象用法
2019/11/25 Python
幼儿园春游活动方案
2014/01/19 职场文书
社会体育专业大学生职业生涯规划书
2014/09/17 职场文书
学校班子个人对照检查材料思想汇报
2014/09/27 职场文书
教师党员个人自我剖析材料
2014/09/29 职场文书
工厂见习报告范文
2014/10/31 职场文书
实习护士自荐信
2015/03/25 职场文书
红高粱观后感
2015/06/10 职场文书
教师节表彰会主持词
2015/07/06 职场文书