`

DOM元素的事件捕获和冒泡

阅读更多
事件:
当HTML页面上发生一个事件时,每个层次上的DOM元素都有机会处理这个事件。
以下面的HTML代码为例:
<div class='foo'>
<span>
<a href='http://www.baidu.com'>百度</a>
</span>
<p>How are you!</p>
</div>
该页面在浏览器上呈现的效果如下图(HTML页面呈现的效果):

如果单击了页面中的a(锚)元素,那么<div>,<span>和<a>元素全都应该得到响应这次单击的机会。因为这
3个元素同时都处于用户鼠标的指针之下。

允许多个元素响应单击事件的一种策略叫做事件捕获。在事件捕获的过程中,事件首先会交给最外层的元素,接着再交给更具体的元素。
在这个例子中,意味着单击事件首先会传递给<div>,然后是<span>,最后是<a>.如图:事件捕获。

另外一种相反的策略叫做事件冒泡。即当事件发生时,会首先送给最具体的元素,在这个元素获得相应机会之后,
事件会向上冒泡到更一般的元素。在这个例子中,<a>会首先处理事件,然后按照顺序依次是<span>和<div>.
如图:事件冒泡。

DOM标准规定应该同时使用这两个策略:首先,事件要从一般到具体进行捕获,然后,事件再通过冒泡返回DOM
树的顶层。

注:
事件捕获和事件冒泡是"浏览器大战"时期分别由Netscape和微软提出的两种相反的事件传播模型。

停止事件传播:
事件对象提供了一个stopPropagation()的方法,该方法可以完全阻止事件的冒泡。


当用户单击<a>锚元素连接时,浏览器会加载一个新页面,它是单击锚元素的默认操作。类似地,当用户
在编辑完表单后按下回车键时,会触发表单的submit事件,在此事件发生后,表单提交才会真正发生。
如果我们不希望执行这种默认操作,那么在事件对象上调用preventDefault()方法,则可以在触发默认
操作之前终止事件。

如果想同时停止事件传播和默认操作,可以在事件处理程序中返回false,这是对在事件对象上同时调用
stopPropagation()和preventDefault()的一种简写方式。
  • 大小: 17.9 KB
  • 大小: 31.2 KB
  • 大小: 51.3 KB
分享到:
评论

相关推荐

    【JavaScript源代码】javascript事件冒泡,事件捕获和事件委托详解.docx

    javascript事件冒泡,事件捕获和事件委托详解  1、事件冒泡:在javascript事件传播过程中,当事件在一个元素上出发之后,事件会逐级传播给先辈元素,直到document为止,有的浏览器可能到window为止。并不是所有的...

    javascript 中事件冒泡和事件捕获机制的详解

    javascript 中事件冒泡和事件捕获机制的详解 二者作用:描述事件触发时序问题 事件捕获:从document到触发事件的那个节点,即自上而下的去触发事件—由外到内 事件冒泡:自下而上的去触发事件—由内到外 绑定事件...

    【JavaScript源代码】JavaScript中事件冒泡机制示例详析.docx

    JavaScript中事件冒泡机制示例详析  DOM事件流(event flow )存在三个阶段:事件捕获阶段、 处于目标阶段、 ... dom标准事件流的触发的先后顺序为:先捕获再冒泡,即当触发dom事件时,会先进行事件捕获,捕获到事件

    DOM事件阶段以及事件捕获与事件冒泡先后执行顺序(图文详解)

    DOM事件标准定义了两种事件流,这两种事件流有着显著的不同并且可能对你的...和许多Web技术一样,在它们成为标准之前,Netscape和微软各自不同地实现了它们,下面介绍DOM事件阶段以及事件捕获与事件冒泡先后执行顺序

    DOM事件流,冒泡 | 捕获 | 委托 ,详解

    目录(一)DOM事件流① 定义② 图解③ 历史(二)冒泡(三)捕获(四)在不同的阶段执行事件(五)提高内存和性能 — 事件委托① 实例② 优点 (一)DOM事件流 ① 定义 DOM事件流包括三个阶段: 捕获阶段 目标阶段 ...

    javaScript 事件绑定、事件冒泡、事件捕获和事件执行顺序整理总结

    抽空学习了下javascript和jquery的事件设计,收获颇大,总结此贴,和大家分享。 (一)事件绑定的几种方式 javascript给DOM绑定事件处理函数总的来说有2种方式:在html文档中绑定、在js代码中绑定。下面的方式1、方式2...

    js之事件冒泡和事件捕获详细介绍

    (1)冒泡型事件:事件按照从最特定的事件目标到最不特定的事件目标(document对象)的顺序触发。  IE 5.5: div -&gt; body -&gt; document ...(2)捕获型事件(event ...(3)DOM事件流:同时支持两种事件模型:捕获型事件

    深入理解JS DOM事件机制

    “DOM2级事件流”规定的事件流包括三个阶段:事件捕获阶段、处于目标阶段和冒泡阶段。首先发生的是事件捕获,为截获事件提供了机会。然后是实际的目标接收到事件。最后一个阶段是冒泡阶段,可以在这个阶段对事件作出...

    通俗易懂地理清js事件流中的捕获阶段,目标阶段和冒泡阶段的具体运行顺序

    众所周知,事件流分为三个阶段冒泡... true代表捕获,false代表冒泡事件 目标对象.eventPhase如果显示1代表捕获阶段,2代表目标阶段3是冒泡阶段 基于上述代码我写出了如下的测试代码 Title 点我啊 function testt

    js点击事件的执行过程实例分析【冒泡与捕获】

    js事件对象event包括很多事件类型,这里用onclick事件为例,探讨一下在js事件捕获机制和冒泡机制下的执行过程,以及如何阻止事件的捕获和冒泡。 首先看下当我们点击一个元素后,浏览器的执行过程。 1,当某个元素...

    Javascript Event事件中IE与标准DOM的比较

    1.事件流的区别 IE采用冒泡型事件 Netscape使用捕获型事件 DOM使用先捕获后冒泡型事件 示例: 代码如下: &lt;body&gt; &lt;div&gt; &lt;button&gt;点击这里&lt;/button&gt; &lt;/div&gt; &lt;/body&gt; 冒泡型事件模型: button-...

    React中阻止事件冒泡的问题详析

    前言 最近在研究react、redux等,网上找...捕获即事件沿着 DOM 树由上往下传递,到达触发事件的元素后,开始由下往上冒泡。 IE9 及之前的版本只支持冒泡  | A  —————–|–|—————–  | Parent | | 

    JavaScript实现父子dom同时绑定两个点击事件,一个用捕获,一个用冒泡时执行顺序的方法

    主要介绍了JavaScript实现父子dom同时绑定两个点击事件,一个用捕获,一个用冒泡时执行顺序的方法,涉及javascript事件的触发与执行原理及相关操作技巧,需要的朋友可以参考下

    DOM事件流示意图

    DOM事件流的示意图,清晰的展示了DOM事件流的捕获过程,以及冒泡过程

    js事件机制—-捕获与冒泡机制实例分析

    本文实例讲述了js事件机制—-捕获与冒泡机制。分享给大家供大家参考,具体如下: 先从事件绑定机制说起, 事件绑定机制通过绑定方法addEventListener()实现, 语法格式如下: element.addEventListener(event, function...

    详解javascript事件冒泡

    如果一个html元素触发事件,那么这个事件就会在DOM树中的触发节点和根节点之间按照一定的顺序传播,所有经过的节点都会接收到被触发的事件,这个传播过程被称之为事件流。按照事件的传播顺序,可以将其分为两类,一...

    javascript事件捕获机制【深入分析IE和DOM中的事件模型】

    主要介绍了javascript事件捕获机制,结合实例形式分析了冒泡的原理、事件捕获、各浏览器事件处理机制与IE和DOM中的事件模型等,需要的朋友可以参考下

    Javascript Event(事件)的传播与冒泡

    特性说明和原理图: 标准浏览器和Ie9+浏览器都支持事件的... Ie8-用attachEvent为dom元素添加一个事件,但必须在事件名前加上on,此类事件只能在元素的冒泡阶段。 stopPropagatin()方法用于阻止事件的传播,如果设

Global site tag (gtag.js) - Google Analytics