美文网首页
js事件机制:冒泡与捕获

js事件机制:冒泡与捕获

作者: shadow123 | 来源:发表于2017-06-16 23:32 被阅读0次

基础知识

1.操作系统最先知道用户点击了鼠标,浏览器次之
2.child 被点击了,意味着 parent 也被点击了
3.如果我同时监听了 child 和 parent,那么谁先通知我?这是个问题。

捕获阶段

parent 先通知,child 后通知

<body>
  <div class="parent">
    <div class="child"></div>
  </div>
<script>
  var parent = document.getElementsByClassName("parent")[0];
  var child = document.getElementsByClassName("child")[0];
  child.addEventListener('click',function(){
    console.log("child")
  },true)
  parent.addEventListener('click',function(){
    console.log("parent");
  },true)
  document.body.addEventListener('click',function(){
    console.log("body");
  },true)
</script>
</body>

当点击chlid时,控制台依次显示如下:

捕获从window开始,到document,再到html,再到body,再到被点击元素的祖先元素,再到被点击元素的父元素,最后到被点击的元素。一级一级往下找,只要有监听事件,就执行。用一幅图描述,如下:

Capture Phase就是捕获阶段,只有早期 Navigator 默认支持它,所以我们一般不用「捕获阶段」。Bubbling Phase是冒泡阶段,一般用「冒泡阶段」。

冒泡阶段

child 先通知,parent 后通知
IE 一开始就支持冒泡。

<body>
  <div class="parent">
    <div class="child"></div>
  </div>
<script>
  var parent = document.getElementsByClassName("parent")[0];
  var child = document.getElementsByClassName("child")[0];
  child.addEventListener('click',function(){
    console.log("child")
  })
  parent.addEventListener('click',function(){
    console.log("parent");
  })
  document.body.addEventListener('click',function(){
    console.log("body");
  })
</script>
</body>

当点击chlid时,控制台显示如下:

冒泡跟捕获相反,从被点击的元素开始,到被点击元素的父元素,再到被点击元素的祖先元素,再到body,再到html,再到document,最后到window,一级一级往上冒,有监听事件就执行。

相关文章

  • 图解事件委托

    事件捕获和事件冒泡 说到事件委托我们就不得不提JS中事件的整个历程中的两个机制:事件捕获和事件冒泡。 然而要说这事...

  • js事件机制:冒泡与捕获

    基础知识 1.操作系统最先知道用户点击了鼠标,浏览器次之2.child 被点击了,意味着 parent 也被点击了...

  • Node.js 的 events 模块

    Node.js 没有浏览器的事件冒泡、事件捕获机制。 events 模块是 Node.js 基础及重要的模块, 只...

  • vue 阻止事件冒泡,捕获方法

    要想了解 VUE 阻止事件冒泡和捕获方法,首先要了解一下 JS 事件和 JS 阻止事件冒泡,捕获方法 1. js ...

  • JS事件的冒泡捕获--发生了什么

    多次遇到事件冒泡与捕获相关的题目,冒泡和捕获机制在不同浏览器中的兼容性也不相同,IE中默认只支持冒泡机制,冒泡和捕...

  • js事件机制

    一、js事件机制三个阶段:事件捕获、事件目标处理函数、事件冒泡 js中事件执行的整个过程称之为事件流,分为三个阶段...

  • 事件基础(2)

    js事件的三个阶段:捕获,目标,冒泡 IE:IE事件流是事件冒泡流 Netscape事件流是事件捕获流 IE事件...

  • JS事件相关基础

    js事件: 键盘事件: JS中的事件冒泡和事件捕获: 1、事件冒泡。如下代码: 点击button事件,连同父元素绑...

  • JS事件机制----捕获和冒泡

    在工作学习中,事件绑定机制用到了addEventListener()绑定方法,其具体用法如下: element.a...

  • Javascript-Event事件(一)

    事件传播的过程 捕获 冒泡 DOM事件流 捕获 由不太具体的节点更早接收事件,而最具体的元素最后接收事件,机制与冒...

网友评论

      本文标题:js事件机制:冒泡与捕获

      本文链接:https://www.haomeiwen.com/subject/ircvqxtx.html