`

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事件、以及捕获和冒泡

    3. DOM2级事件处理:使用`addEventListener`和`removeEventListener`方法,这提供了更多的灵活性和控制,例如支持多个事件监听器和区分捕获与冒泡。 事件冒泡是JavaScript事件处理的典型模式,通常更受开发者欢迎,...

    利用事件冒泡(Event Bubbling )获取鼠标下的元素属性

    2. **动态元素的事件处理**:如果动态添加或删除DOM元素,使用事件冒泡,父元素的事件处理函数仍然可以处理这些新添加的元素的事件。 3. **阻止不必要的事件处理**:有时我们只想让事件在特定的元素上处理,不希望...

    JS冒泡事件与事件捕获实例详解

    冒泡事件和事件捕获是JavaScript中处理事件传播的两种主要模型,它们定义了事件在DOM树中传播的顺序。在实际的Web开发中,深入理解这两种模型对于正确处理事件,避免潜在的问题至关重要。 冒泡事件是指当一个事件在...

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

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

    JS中绑定事件顺序(事件冒泡与事件捕获区别)

    这意味着如果你同时在父元素和子元素上设置了相同类型的事件处理函数,当子元素的事件被触发时,首先执行的是子元素的函数,然后才是父元素的函数。例如,在提供的代码示例中,当点击id3元素时,事件首先在捕获阶段...

    JS操作DOM元素属性和方法大全

    **JS操作DOM元素属性和方法大全** 在JavaScript中,DOM(Document Object Model)是一种标准,用于表示HTML或XML文档的结构,并提供了与这些文档交互的方法。DOM是浏览器提供的一种接口,使得JavaScript能够读取、...

    事件冒泡及捕获

    事件冒泡和事件捕获是两种不同的事件处理机制,它们决定了事件如何在DOM(Document Object Model)层次结构中传播。了解这两者对于优化事件处理性能和编写高效代码至关重要。 事件冒泡是从最具体的节点(通常是DOM...

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

    2. **事件捕获**:与事件冒泡相反,事件捕获自DOM树的根部(通常是`document`)开始,向下传播到目标元素。`addEventListener`方法的第三个参数`useCapture`用于启用事件捕获,值为`true`表示在捕获阶段处理事件。...

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

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

    .遍历DOM元素

    4. 事件委托:遍历祖先节点以捕获或冒泡事件。 三、遍历技巧与注意事项 1. 避免使用`for...in`遍历DOM,因为它会遍历对象的所有可枚举属性,包括原型链上的属性。 2. 使用`NodeList`对象时,注意其非活集合特性,...

    js基础之事件捕获与冒泡原理

    在前端开发中,JavaScript 的...幸运的是,W3C 提出了统一的标准,即 DOM 事件流,它定义了事件从触发到处理的三个阶段:捕获阶段、目标阶段和冒泡阶段。如今,现代浏览器都遵循这一标准,这为开发者带来了很大的便利。

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

    接下来是事件冒泡和事件捕获,它们是事件在DOM层次结构中传播的两种方式: - 事件冒泡:事件从最具体的节点(事件目标)开始,向上逐级传播到最不具体的节点(文档)。例如,点击一个按钮,事件会先触发按钮的事件...

    事件冒泡与事件捕获

    在JavaScript的事件处理中,事件冒泡和事件捕获是两个关键的概念,它们定义了事件在DOM(文档对象模型)中的传播方式。事件通常由用户交互触发,如点击按钮、鼠标移动等,当这些事件发生时,它们会在元素及其祖先...

    ie事件捕获控件 捕获ie浏览器到打开链接等等的事件

    事件模型分为三个阶段:冒泡、目标和捕获。在IE浏览器中,事件通常从最具体的元素(如一个按钮)开始,然后向上冒泡到更不具体的元素(如其父元素),直到到达文档的根节点。然而,通过事件捕获,我们可以选择在事件...

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

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

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

    事件流主要有三种阶段:事件捕获阶段、处于目标阶段和事件冒泡阶段。 事件捕获阶段是从DOM树的根节点开始,沿着树向下传播到目标节点。在这个阶段,事件首先由最外层的父元素接收,然后逐级向下传递,直到到达触发...

    一篇文章让你彻底弄懂JS的事件冒泡和事件捕获

    总结来说,事件冒泡和事件捕获是描述事件在DOM树中如何传播的两个重要概念。虽然事件冒泡是默认行为,但通过设置addEventListener方法的第三个参数,开发者可以根据具体需求控制事件的触发顺序。在实际开发中,理解...

    事件冒泡解决方案

    在JavaScript的DOM编程中,事件冒泡是一个非常重要的概念,尤其在处理多级嵌套元素的事件时。事件冒泡是指事件开始时由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上转播至最不具体的节点(文档...

    js冒泡、捕获事件及阻止冒泡方法详细总结

    JavaScript中的事件处理机制主要包括两种模式:事件冒泡和事件捕获。这两个概念是理解JavaScript事件处理的关键,尤其在处理复杂的用户交互和DOM操作时显得尤为重要。 事件冒泡是指事件从最深的节点(子节点)开始...

Global site tag (gtag.js) - Google Analytics