理解javascript中DOM事件

理解JavaScript中DOM事件的完整攻略

DOM处理事件的机制是基于事件传播(Event propagation)的,事件传播是指从页面最外层开始逐级向内层传递事件的过程。而JavaScript为开发者提供了两种方式来实现事件处理:事件监听器和事件委托。

事件监听器

事件监听器是在事件触发时执行的代码块,可以使用addEventListener方法添加到HTML元素上。addEventListener期望接收两个参数,第一个参数是事件的名称,第二个参数是事件触发时需要执行的函数,如下图所示:

let button = document.querySelector('#button')
button.addEventListener('click', function() {
  console.log('Hello World')
})

在上面的代码中,我们为一个button元素添加了一个click事件监听器。当用户点击button按钮时,将会触发这个事件监听器,然后执行内部的函数。

除此之外,addEventListener还有第三个参数。这个参数是一个boolean值,通常被称为useCapture。它决定了事件按照捕获还是冒泡的方式处理,默认值为false,即采用冒泡传播方式。如果设置为true,则会使用捕获传播方式。

let parent = document.querySelector('#parent')
let child = document.querySelector('#child')

parent.addEventListener('click', function() {
  console.log('parent clicked')
}, true)

child.addEventListener('click', function() {
  console.log('child clicked')
}, true)

在这个例子中,我们为parent元素和child元素都添加了一个click事件监听器,并使用了捕获传播方式。因此当点击child元素时,会按照以下顺序执行两个函数:

  1. parent的监听器函数
  2. child的监听器函数

事件委托

事件委托允许我们使用父元素来捕捉子元素上的事件。在这种情况下,监听器会被绑定到父元素身上,然后通过事件冒泡的方式来检查是否实际发生在了子元素上。这种方式可以有效地避免添加过多事件监听器的问题,从而提高了性能。

<ul>
  <li>Item 1</li>
  <li>Item 2</li>
  <li>Item 3</li>
  <li>Item 4</li>
  <li>Item 5</li>
</ul>

现在,我们为整个ul元素添加一个click事件监听器,而不是为每个li元素添加一个:

let ul = document.querySelector('ul')
ul.addEventListener('click', function(event) {
  console.log(event.target.innerHTML)
})

在监听器中,我们使用了事件对象(event),并输出了用户点击的子元素的文本内容。

示例

假设我们有以下HTML代码:

<div id="outer">
  <div id="inner">Click me!</div>
</div>

我们可以用以下代码为inner元素添加一个点击事件监听器:

let inner = document.querySelector('#inner')
inner.addEventListener('click', function(event) {
  console.log('Inner element clicked!')
})

我们还可以使用事件委托来完成同样的任务,如下所示:

let outer = document.querySelector('#outer')
outer.addEventListener('click', function(event) {
  if (event.target.id === 'inner') {
    console.log('Inner element clicked!')
  }
})

在这个例子中,我们为outer元素添加了一个click事件监听器,并检查事件发生的目标元素是否是inner元素。如果是,那么就执行我们的函数。

let list = document.querySelector('ul')
list.addEventListener('click', function(event) {
  if (event.target.nodeName === 'LI') {
    console.log('List item clicked!')
  }
})

在这个例子中,我们为ul元素添加了一个click事件监听器,并检查点击的目标元素是否是LI元素。如果是,就执行我们的函数。

结论

DOM事件是Web开发中非常重要的一部分,因为事件是Web页面的核心交互方式。我们需要深入了解事件传播的机制,以及如何使用事件监听器和事件委托来管理事件,并提高性能。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:理解javascript中DOM事件 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • JS实现的简单表单验证功能完整实例

    下面是JS实现的简单表单验证功能完整实例的攻略。 标题 JS实现的简单表单验证功能完整实例 步骤说明 第一步:HTML部分 在HTML页面中,需要根据需求设置表单元素,包括表单元素的类型、属性以及相关样式。示例如下: <!DOCTYPE html> <html> <head> <title>表单验证</t…

    JavaScript 2023年5月28日
    00
  • Ajax+js实现异步交互

    实现”Ajax+js实现异步交互”的具体步骤如下: 创建 XMLHttpRequest 对象 使用Js 中的 XMLHttpRequest 对象创建Ajax请求,该对象用来与服务器交互,从服务器请求数据和处理响应。 var xmlhttp; if (window.XMLHttpRequest) { // IE7+, Firefox, Chrome, Oper…

    JavaScript 2023年6月11日
    00
  • 在JavaScript中处理字符串之link()方法的使用

    让我详细讲解一下JavaScript中处理字符串之link()方法的使用吧! link() 方法是什么? link() 是字符串对象的方法,它可以生成一个HTML链接标签 (<a>) 用于把指定的字符串转换成可点击的链接。link() 方法具有以下语法: str.link(url) 其中: str:需要生成链接的字符串。 url:链接所指向的UR…

    JavaScript 2023年5月28日
    00
  • JS验证input输入框(字母,数字,符号,中文)

    这里给出JS验证输入框的完整攻略。我们需要以下步骤来完成验证: 获取输入框元素 给输入框元素绑定事件监听器,以便在输入内容时能够及时验证 在事件监听器的回调函数中,通过正则表达式对输入内容进行验证 根据验证结果,决定是否将输入内容存储到变量或者进行其他操作 下面我们详细分析每个步骤,以及提供两个示例。 步骤1:获取输入框元素 我们可以使用 document.…

    JavaScript 2023年6月10日
    00
  • JavaScript实现网站访问次数统计代码

    下面我会详细讲解“JavaScript实现网站访问次数统计代码”的完整攻略。 1. 为什么需要统计网站访问次数? 网站的访问次数统计可以帮助站长了解网站的流量并进行网站流量分析,进而针对性的优化网站,提高网站的访问量和用户满意度。 2. 实现网站访问次数的方法 实现网站访问次数的方法有很多种,其中比较常见的方法有两种:一种是使用服务器日志统计网站访问次数,另…

    JavaScript 2023年6月11日
    00
  • JS Thunk 函数的含义和用法实例总结

    JS Thunk 函数实际上是一种特殊的函数,它将一个多参数函数转换成一个只接受回调函数为参数的单参函数。目的是为了让函数的执行结果可以通过回调函数来获取。 使用 Thunk 函数可以有效地处理异步操作,使得回调嵌套不那么深,也更容易进行错误捕捉。以下将详细解释 Thunk 函数的含义和用法实例总结。 1. 概念 1.1 Thunk 函数的定义 Thunk …

    JavaScript 2023年5月27日
    00
  • jQuery ajax(复习)—Baidu ajax request分离版

    下面是 “jQuery ajax(复习)—Baidu ajax request分离版”的完整攻略。 简介 本篇攻略主要介绍如何使用jQuery发起Ajax请求,以及如何使用Baidu Ajax Request分离版优化你的Ajax请求。 Ajax基础 什么是Ajax? Ajax全称是 Asynchronous JavaScript and XML(异步的 J…

    JavaScript 2023年6月11日
    00
  • 前端编码规范(3)JavaScript 开发规范

    前端编码规范对于一个团队而言是非常重要的,它有助于提高代码的可阅读性、可维护性,并能够帮助团队成员之间保持协同配合。本文主要讲解 JavaScript 开发规范,下面将详细介绍该规范的内容。 1. 变量与常量命名规范 在 JavaScript 开发中,变量与常量命名应当遵循以下规范: 变量和常量名应该基于语义而非单词缩写 全局变量使用 全大写常量 的方式定义…

    JavaScript 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部