首页 > 编程语言 >[Javascript] removeEventListener

[Javascript] removeEventListener

时间:2023-07-27 15:23:13浏览次数:69  
标签:removeEventListener console log button Javascript onClick click

Mistake 1: Not using the same function reference

// Wrong
button.addEventListener('click', () => {console.log('click')})
button.removeEventListener('click', () => {console.log('click')}) // Won't remove the listener
// correct
const onClick = () => console.log('click')
button.addEventListener('click', onClick)
button.removeEventListener('click', onClick)

// Wrong
button.addEventListener('click', function onClick() {console.log('click')})
button.removeEventListener('click', function onClick() {console.log('click')}) // Won't remove the listener
// correct
function onClick() {console.log('click')}
button.addEventListener('click', onClick)
button.removeEventListener('click', onClick)

 

Mistake 2: not passing the same options

function onClick() {console.log('click')}
button.addEventListener('click', onClick, {capture: true})
button.removeEventListener('click', onClick) // Won't remove, it uses defautl capture: false

 

Helper method:

export default function bind(
   target,
   {type, listener, options}
) {
   target.addEventListener(type, listener, options)
    
   return function unbind() {
       target.removeEventListener(type, listener, options)
   } 
}

// usage
const unbind = bind(button, {
    type: 'click',
    listener: () => console.log('click'),
    options: {capture: true}
});

unbind()

 

Lib: https://github.com/alexreardon/bind-event-listener/tree/master 

标签:removeEventListener,console,log,button,Javascript,onClick,click
From: https://www.cnblogs.com/Answer1215/p/17585055.html

相关文章

  • 【小实验】javascript 能够表述的最大整数
    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢!cnblogs博客zhihuGithub公众号:一本正经的瞎扯打开浏览器的控制台,开始输入数值:输入:(16位十进制值)9999999999999998返回同样结果输入:9999999999999999返回:10000000000000000数值不一样,说明精度已经开始丢......
  • ChatGPT 在JavaScript中,由于Number类型只能表示52位精度,因此默认情况下无法进行超过16
    ChatGPT在JavaScript中,由于Number类型只能表示52位精度,因此默认情况下无法进行超过16位的乘法运算。但是,你可以使用BigInt来处理大数字。BigInt是目前JavaScript中处理超出Number精度限制的数字的最佳方式。它是一种新的数据类型,可以表示任意精度的整数。以下是一种解决方案:1.......
  • 带你详细刨析JavaScript 对象数组的深浅拷贝
    深浅拷贝●深浅拷贝指的是一种复制对象或者数组的行为●也就是把一个对象或者数组中的数据完完整整的复制一份放到另一个数组或者对象中●并且相互之间没有联系●说道深浅拷贝这个我们不考虑基本数据类型●因为基本数据类型没有引用地址一说●说到复制这个事儿有三个级别○赋值......
  • JavaScript数据类型
    JavaScript数据类型分类数据类型就是指的就是字面的的类型JavaScript数据类型(共六种)基本数据类型字符串型(String)数值型(Number)布尔型(Boolean)undefined型(Undefined)null型(Null)引用数据类型:Object所有new出来的对象用[]声明的数组用{}声明的对象String......
  • JavaScript命令模式:优雅地管理代码
    JavaScript命令模式在JavaScript中,命令模式是一种行为设计模式,它允许我们将请求封装为一个对象,从而使我们能够将请求的不同参数、方法和对象进行参数化。这种模式的主要目的是将请求的发送者和接收者解耦,从而使代码更加灵活和可维护。命令模式的实现在JavaScript中,我们可以使用......
  • JavaScript学习 -- Base64编码
    Base64编码是一种常用的将二进制数据转换为文本数据的方式。在JavaScript中,我们可以通过使用Base64编码算法,将二进制数据转换为可读的文本数据,以便于在网络传输、文件传输等场景下使用。在本篇博客中,我们将介绍Base64编码的基本原理和相关技术,并提供一些实例来演示如何在JavaScript......
  • 《安富莱嵌入式周报》第318期:无线电扫描仪,高精度功耗分析仪,单片机JavaScript引擎,平头
    周报汇总地址:http://www.armbbs.cn/forum.php?mod=forumdisplay&fid=12&filter=typeid&typeid=104 【实战技能视频】基于硬件垂直消隐的多缓冲技术在LVGL,emWin,GUIX和TouchGFX应用https://www.armbbs.cn/forum.php?mod=viewthread&tid=120114视频版:https://www.bilibili.......
  • [爬虫]2.2.2 使用PhantomJS处理JavaScript
    PhantomJS是一个无头(headless)浏览器,它可以解析和执行JavaScript,非常适合用于爬取动态网页。"无头"意味着它可以在没有用户界面的情况下运行,这对于服务器环境和自动化任务非常有用。安装PhantomJS首先,你需要下载并安装PhantomJS。你可以从官方网站下载↗适合你的操作系统的版本......
  • 03_JavaScript
    一.JavaScript概述1.简介JavaScript一种解释性脚本语言,是一种动态类型、弱类型、基于原型继承的语言,内置支持类型。它的解释器被称为JavaScript引擎,作为浏览器的一部分,广泛用于客户端的脚本语言,用来给HTML网页增加动态功能。脚本语言是为了缩短传统的编写-编译-链接-运行(edit-......
  • javascript中的arguments
    在JavaScript中,arguments 是在每个函数中自动可用的特殊变量。它们表示调用函数时传递给函数的值。术语“arguments ”既指传递到函数中的实际值,也指用于在函数内访问这些值的机制。 JavaScript函数可以接受任意数量的参数,这意味着调用函数时可以传递零个、一个、两个或......