JavaScript 中的事件冒泡和捕获17 Mar 2025 | 6 分钟阅读 在 JavaScript 中,事件的传播被称为“事件流”。事件流是特定网页接收事件的顺序。因此,在 JS 中,事件流的过程取决于三个方面: 事件捕获 事件目标 事件冒泡 在本节中,我们将学习和讨论两个方面,即事件冒泡和事件捕获。我们将尝试逐一实践性地学习这些概念。 事件冒泡在使用 JavaScript 开发网页或网站时,会使用事件冒泡的概念,即当一个元素嵌套在另一个元素中,并且它们都属于同一个事件时,事件处理程序会被调用。这种技术或方法被称为事件冒泡。因此,在执行网页的事件流时,会使用事件冒泡。我们可以将事件冒泡理解为当一个元素嵌套在另一个元素中,并且两个元素都为同一事件注册了监听器时,调用事件处理程序的顺序。所以,调用从最深层的元素开始,向其父元素及所有祖先元素,自下而上地进行。 事件冒泡示例让我们看下面的例子来理解事件冒泡的工作原理。 输出 ![]() 代码说明
这个顺序的发生是由于事件冒泡的概念。事件冒泡就是这样发生的。 我们也可以借助下面的流程图来理解事件流。 ![]() 这意味着当用户点击按钮时,点击事件按从下到上的顺序流动。 停止冒泡从目标开始向上移动就是冒泡,即从子元素到其父元素,它会一直向上移动。但处理程序也可以在事件被完全处理后决定停止冒泡。在 JavaScript 中,我们使用 event.stopPropagation() 方法。 例如 在上面的代码中,当我们点击按钮时,它将不起作用,因为这里调用了 event.stopPropagation() 方法,导致父函数不会被调用。 ![]() 注意:event.stopPropagation() 方法阻止了向上的冒泡(仅针对一个事件),但当前元素上的所有其他处理程序仍然会运行。为了停止冒泡并阻止当前元素上的处理程序运行,我们可以使用 event.stopImmediatePropagation() 方法。这是另一个方法,可以停止冒泡和所有其他处理程序的执行。这意味着如果一个元素在单个事件上有多个事件处理程序,使用此 event.stopImmediatePropagation() 方法将停止所有事件处理程序的冒泡。 不要不必要地使用事件冒泡。尽管事件冒泡是一种方便的方法,但建议不要不必要地使用它。这是因为 event.stopPropagation() 方法会产生隐藏的陷阱,这些陷阱可能会在以后引起一些问题。 让我们通过一个例子来理解它。
尽管不了解事件捕获,事件冒泡的概念是不完整的,所以让我们从事件捕获开始,并尝试结合这两个概念来完全理解其概念和工作原理。 事件捕获Netscape 浏览器是第一个引入事件捕获概念的。事件捕获与事件冒泡相反,在事件捕获中,事件从最外层元素移动到目标。而在事件冒泡的情况下,事件从目标移动到文件中的最外层元素。事件捕获在事件冒泡之前执行,但捕获很少使用,因为事件冒泡足以处理事件流。 事件捕获示例 让我们看一个示例代码来理解事件捕获的工作原理。 输出 ![]() 代码说明
所以,当我们点击按钮时,点击事件按以下顺序执行,您可以在下面的流程图中看到。 ![]() 事件流的完整概念下图显示了事件流的执行过程。 ![]() 因此,事件处理和事件捕获都是事件委托的基础。它们是事件流的强大力量。 |
是 JavaScript 的 DOM 属性,它允许设置元素的 CSS(层叠样式表)类的样式。是一个只读属性,返回 CSS 类名。它是 JavaScript 相对于其他属性的一个属性……
5 分钟阅读
? 复选框是一种选择框,允许用户通过选中和取消选中来做出二元选择(真或假)。基本上,复选框是一个图标,经常用于 GUI 表单和应用程序中以获取一个或多个输入...
5 分钟阅读
?在理解“如何调试 JavaScript”之前,我们必须先理解“调试”这个术语。什么是代码调试?在编写代码或程序时,我们可能会犯许多错误,例如逻辑错误、语法错误等。调试允许我们找到错误发生的位置/点...
阅读 3 分钟
? JavaScript 是一种轻量级的面向对象编程语言,许多网站都使用它来编写网页脚本。它是一种解释性的、功能齐全的编程语言。当应用于 HTML 文档时,JavaScript 可以实现网站的动态交互性。JavaScript 帮助用户构建现代网络...
阅读 3 分钟
javascript 使用一个简单的方法来移除单个和多个类。我们可以将查询选择器与 remove() 方法一起使用。remove 方法需要 classList 关键字来获取多个类。多个类在 javascript 中使用“for”循环。语法 语法...
5 分钟阅读
什么是“原生 JavaScript”?“原生脚本”一词用于指纯 JavaScript(或者我们可以说普通 JavaScript),没有任何类型的附加库。有时人们经常开玩笑地使用它。如今,许多事情也可以在不使用任何...的情况下完成。
阅读 3 分钟
在 JavaScript 中,italics() 方法用于显示斜体字符串。它使文本类似于 <i> </i>(斜体标签)中的文本。因为 italics() 方法是字符串对象的方法,所以它必须通过特定实例调用...
阅读 2 分钟
前端开发者:是什么?前端开发者,通常被称为前端 Web 开发者,是负责创建界面的专家。为了让他们能够使用所讨论的应用程序,用户需要这个界面。网页设计师是创建...
阅读 3 分钟
在 JavaScript 中替换字符串通常很困难。使用 string.replace() 技术更改每个出现项仍然可能很棘手。当涉及到换行符和制表符时,删除所有空格可能很费力。幸运的是,JavaScript 的 string.replace() 函数支持正则表达式。该方法...
阅读 3 分钟
Element 接口的 insertAdjacentHTML() 方法将给定文本转换为 HTML 或 XML,并将生成的节点插入到 DOM 树中预定的位置。要将文本作为 HTML 文件插入到 DOM 中的某个点,请使用 insertAdjacentHTML() 方法。文本...
阅读 4 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India