关于JS中addEventListener的使用

article/2025/9/12 23:41:40

关于JSaddEventListener的使用

MDN中addEventListener()说明

使用removeEventListener可以解绑事件 MDN中removeEventListener()说明

主要用来实现事件的绑定
存在三个参数 target.addEventListener(type, listener, useCapture);

  • type: 表示监听事件类型的字符串。类似于click,mouseover...
  • listener: 用来监听处理的函数方法
  • useCapture: 默认是false,事件冒泡,可以设置为true事件捕获

这里需要了解一下基本的事件流(事件捕获->事件目标->事件冒泡)
事件捕获: 事件从最顶层元素一直传递到目标元素(就是从外往内)
事件目标: 事件到达目标元素. 如果事件指定不冒泡. 那就会在这里中止
事件冒泡: 事件从目标元素父元素向上逐级传递直到最顶层元素(就是从里往外)

在这里插入图片描述

HTML 元素pdiv的子元素

<div class="div"><p class="p">addEventListener</p>
</div>

1. 默认形式(false)是按照事件冒泡触发

如果子元素和父元素同时使用addEventListener触发事件,在子元素事件触发的时候,父元素的事件会在子元素事件触发完成之后触发,这便是事件冒泡,从内到外先触发内层的p绑定的事件,再触发外层的div绑定的事件

const div = document.querySelector(".div")
const p = document.querySelector(".p")
p.addEventListener("click", pClickEvent, false)
div.addEventListener("click", divClickEvent, false)
function pClickEvent() {alert("p 元素点击事件触发")
}	
function divClickEvent() {alert("div 元素点击事件触发")
}

在这里插入图片描述

2. 事件捕获(true)

如果子元素和父元素同时使用addEventListener触发事件,同时设置第三个参数是true,说明事件是按照捕获的形式触发,从外到内先触发外层的div绑定的事件,再触发内层的p绑定的事件

const div = document.querySelector(".div")
const p = document.querySelector(".p")
p.addEventListener("click", pClickEvent, true)
div.addEventListener("click", divClickEvent, true)
function divClickEvent() {alert("div 元素点击事件触发")
}
function pClickEvent() {alert("p 元素点击事件触发")
}

在这里插入图片描述

3. 解除绑定(removeEventListener)

const div = document.querySelector(".div")
const p = document.querySelector(".p")
const btn = document.querySelector(".btn")
div.addEventListener("click", divClickEvent)
p.addEventListener("click", pClickEvent)
function divClickEvent() {alert("div 元素点击事件触发")
}
function pClickEvent() {alert("p 元素点击事件触发")
}
btn.onclick = () => {div.removeEventListener("click", divClickEvent)p.removeEventListener("click", pClickEvent)
}

在这里插入图片描述

4. 注意注意注意

  1. 如果绑定事件的时候给addEventListener传递了第三个参数为true,那么解除绑定的时候也需要给removeEventListener传递第三个参数为true,否则解绑会失败
    div.addEventListener("click", divClickEvent, true)
    p.addEventListener("click", pClickEvent, true)
    
    如果绑定的形式为上面的类型,解除绑定必须给定为true
    div.removeEventListener("click", divClickEvent,true)
    p.removeEventListener("click", pClickEvent,true)
    
  2. 使用addEventListener绑定事件的时候不推荐使用箭头函数或者匿名函数,这样会出现removeEventListener无法解除绑定的问题
    下面情况就会出现removeEventListener会无效化
    div.addEventListener("click", () => {console.log(123, '123')})
    div.removeEventListener("click", () => {console.log(123, '123')})
    

http://chatgpt.dhexx.cn/article/b4UnUnmd.shtml

相关文章

JavaScript属性及正则表达式

目录 offset、client、scroll属性offsetclientscroll 正则表达式什么是正则表达式正则表达式的特点正则表达式的创建正则表达式的检验正则表达式的修饰符模式修饰符边界符预定义符转义特殊字符字符类字符组合取反符量词符括号字符 正则表达式的优先级String类中的方法match方法…

前端js正则表达式

正则表达式 第一章 正则表达式字符匹配攻略 1.1. 两种模糊匹配 1.1.1. 横向模糊匹配 一个正则可匹配的字符串的长度不是固定的&#xff0c;可以是多种情况的。譬如 {m,n}&#xff0c;表示连续出现最少 m 次&#xff0c;最多 n 次。其实现的方式是使用量词。例如let reg /a…

JS正则表达式字符匹配

正则表达式字符匹配 这是阅读《JavaScript正则表达式迷你书》后整理的一些笔记。 正则表达式是匹配模式&#xff0c;要么匹配字符&#xff0c;要么匹配位置。 下面主要介绍匹配字符的情况&#xff0c;匹配位置的情况我也正在学习中。 两种模糊匹配&#xff1a; 1.横向模糊匹…

JS正则表达式

JS正则表达式 0.前言 首先是一些资料[在线测试网站](regex101: build, test, and debug regex)和简明易懂教程。 正则表达式是一组由字母和符号组成的特殊文本&#xff0c;它可以用来从文本中找出满足你想要的格式的句子。 一个正则表达式是一种从左到右匹配主体字符串的模式。…

Spring框架总结

简介 创立于 2003年 , 是为了解决企业级开发的复杂性的! 是一个分层的se/ee(javase和java ee)一站式轻量级开源框架 作用&#xff1a; 1.Spring是一个开元的轻量级的应用开发框架&#xff0c;其目的是用于简化企业级应用程序开发&#xff0c;减少侵入&#xff1b; 2.Spring的…

Spring框架特点

Spring是什么&#xff1f; spring是一个轻量级的 IOC&#xff08;控制反转&#xff09;和AOP(面向切面)的编程。 什么是IOC? IOC(控制反转) &#xff1a;传统JAVA SE 程序设计&#xff0c;我们直接在程序内部通过new来创建对象&#xff0c;是程序主动去创建依赖对象&#x…

Spring框架常用注解

Spring常用注解 Controller Controller 用来响应页面&#xff0c;表示当前的类为控制器。 在SpringMVC 中&#xff0c;控制器Controller 负责处理由DispatcherServlet 分发的请求&#xff0c;它把用户请求的数据经过业务处理层处理之后封装成一个Model &#xff0c;然后再把该…

浅谈我对spring框架的理解

总所周知&#xff0c;java界乃由五大传统框架&#xff1a;1.核心业务层框架&#xff08;地位不可动摇&#xff09;spring,2.控制层框架&#xff1a;spring MVC与struts2, 持久层框架&#xff1a;Mybatis&#xff0c;hibernate。 先从spring说起吧&#xff0c;了解过spring的同学…

Spring框架(一):spring框架的简介

一、spring框架的概念 Spring是一个开源轻量级的控制反转(IoC)和面向切面(AOP)的容器框架&#xff0c;它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而&#xff0c;Spring的用途不仅限于服务…

关于对Spring框架的详解

Spring框架 基本概念Spring的形成主要模块三层架构Spring的优点对于Spring 框架中都用到设计模式&#xff1a; 基本概念 Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而&#xff0c;Spring的用途不仅仅限于服务…

【Spring框架】Spring框架介绍

文章目录 Spring框架介绍Spring两大核心技术 Spring的优点Spring体系介绍核心容器数据访问/集成Web页面其他模块 Spring框架介绍 Spring框架是分层的 Java SE/EE 应用 full-stack 全栈式轻量级开源框架&#xff0c;以 IOC(Inverse Of Control&#xff1a;控制反转)和 AOP(Aspe…

【Java】Spring框架

一、Spring简介 简介 Spring是分层的Java SE/EE应用full-stack轻量级开源框架&#xff0c;以IoC&#xff08;Inverse Of Control&#xff1a;反转控制&#xff09;和AOP&#xff08;Aspect Oriented Programming&#xff1a;面向切面编程&#xff09;为内核。提供了展现层Spr…

spring框架解析(全)

spring概述 spring容器启动 springIoc控制反转 spring依赖注入 spring事务 spring事件监听 springaop面向切面编程 –AOP用例搭建 –注解配置 Spring AOP详解 –Transactional注解 spring注解大全 spring概述 spring是一个轻量级的容器,用于管理业务相关对象的。其两…

Spring框架学习

Spring框架 1、Spring框架介绍及搭建 Spring简介(官网&#xff1a;Spring | Home) Spring框架是一个开放源代码的J2EE应用程序框架&#xff0c;由Rod Johnson发起&#xff0c;是针对bean的生命周期进行管理的轻量级容器&#xff08;lightweight container&#xff09;。 Spr…

什么是spring框架?spring特点与好处,使用spring框架的好处是什么.

Spring是一个开源框架&#xff0c;Spring是于2003 年兴起的一个轻量级的Java 开发框架&#xff0c;由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其…

什么是spring框架?spring框架到底有什么用?spring框架到底做了些什么?

什么是spring框架&#xff0c;spring框架究竟有什么用呢&#xff1f;我们可以用spring框架来做些什么呢&#xff1f;这是我今天要说的内容。 当然&#xff0c;百度spring框架会出现一大堆spring框架的介绍&#xff0c;以及IOC和AOP。但是这些官方的语言&#xff0c;看书都有解…

【Spring框架一】——Spring框架简介

系列文章目录 Spring框架简介 系列文章目录前言一、什么是Spring框架&#xff1f;二、Spring框架的优势1.简化开发流程&#xff1a;Spring提供了许多现成的功能&#xff0c;可以使得开发人员在构建应用程序时减少编写重复代码的工作。2.提高可维护性&#xff1a;Spring框架采用…

Spring 框架

Spring 1、概述&#xff1a; Spring是最受欢迎的轻量级的企业级Java应用程序开发框架&#xff1b;Spring框架的 核心特性可以用于开发任何Java应用程序&#xff0c;但是在JavaEE平台上构建Web应 用程序是需要扩展的。Spring框架的目标是使J2EE开发变得更容易使用&#xff0c;通…

Spring框架梳理总结(适合多刷)

目录 前言大纲总结1. 概念详解1.1 IOC与AOP1.2 IOC与DI1.3 接口区别 2. 注入方式2.1 基本类型2.2 复杂类型 3. 配置属性4. 注解注入5. AOP 前言 在看完上一篇文章每个知识点的时候 Spring框架从入门到学精&#xff08;全&#xff09; 大部分人对spring还是有些懵懂 可能是知识…

学习Spring框架这一篇就够了

1. spring概述 1.1 Spring是什么&#xff08;理解&#xff09; Spring是分层的 Java SE/EE应用 full-stack&#xff08;全栈的&#xff09; 轻量级开源框架&#xff0c;以 IOC&#xff08;Inverse Of Control&#xff1a;控制反转&#xff09;和 AOP&#xff08;Aspect Orient…