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 相关文章推荐
js自动生成的元素与页面原有元素发生堆叠的解决方法
Oct 24 Javascript
node.js中的http.createClient方法使用说明
Dec 15 Javascript
JQuery显示、隐藏div的几种方法简明总结
Apr 16 Javascript
使用Node.js为其他程序编写扩展的基本方法
Jun 23 Javascript
jquery实现模拟百分比进度条渐变效果代码
Oct 29 Javascript
JS实现利用两个队列表示一个栈的方法
Dec 13 Javascript
Angular2.0实现modal对话框的方法示例
Feb 18 Javascript
ES6下子组件调用父组件的方法(推荐)
Feb 23 Javascript
Vue CLI2升级至Vue CLI3的方法步骤
May 20 Javascript
vue项目添加多页面配置的步骤详解
May 22 Javascript
工作中常用js功能汇总
Nov 07 Javascript
微信小程序实现modal弹出框遮罩层组件(可带文本框)
Dec 20 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
利用文件属性结合Session实现在线人数统计
2006/10/09 PHP
Php注入点构造代码
2008/06/14 PHP
深入理解curl类,可用于模拟get,post和curl下载
2013/06/08 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
2018/06/13 PHP
PHP中localeconv()函数的用法
2019/03/26 PHP
基于Laravel(5.4版本)的基本增删改查操作方法
2019/10/11 PHP
浅谈laravel-admin form中的数据,在提交后,保存前,获取并进行编辑
2019/10/21 PHP
js解析与序列化json数据(二)序列化探讨
2013/02/01 Javascript
通过一段代码简单说js中的this的使用
2013/07/23 Javascript
js插件方式打开pdf文件(浏览器pdf插件分享)
2013/12/20 Javascript
原生javascript实现拖动元素示例代码
2014/09/01 Javascript
jQuery javascript获得网页的高度与宽度的实现代码
2016/04/26 Javascript
基于Javascript倒计时效果
2016/12/22 Javascript
老生常谈jquery id选择器和class选择器的区别
2017/02/12 Javascript
浅谈Node.js轻量级Web框架Express4.x使用指南
2017/05/03 Javascript
vue-router单页面路由
2017/06/17 Javascript
利用JavaScript实现栈的数据结构示例代码
2017/08/02 Javascript
微信小程序swiper组件用法实例分析【附源码下载】
2017/12/07 Javascript
浅析JS抽象工厂模式
2017/12/14 Javascript
在Python中操作字符串之startswith()方法的使用
2015/05/20 Python
在Python的列表中利用remove()方法删除元素的教程
2015/05/21 Python
Python序列操作之进阶篇
2016/12/08 Python
Python模拟用户登录验证
2017/09/11 Python
实例详解Python模块decimal
2019/06/26 Python
python实现对变位词的判断方法
2020/04/05 Python
Numpy数组的广播机制的实现
2020/11/03 Python
python反扒机制的5种解决方法
2021/02/06 Python
开发人员所需要知道的HTML5性能分析面面观
2012/07/05 HTML / CSS
以实惠的价格提供高品质的时尚:Newchic
2018/01/18 全球购物
个人求职简历的自我评价范文
2013/10/09 职场文书
人事专员的岗位职责
2014/03/01 职场文书
2015年度个人教学工作总结
2015/05/20 职场文书
2015年公司中秋节致辞
2015/07/31 职场文书
python入门之算法学习
2021/04/22 Python
Python+tkinter实现高清图片保存
2022/03/13 Python
Redis分布式锁的7种实现
2022/04/01 Redis