在 JavaScript 中,咱们常常需要增添事情监听器以相应用户的交互操纵,譬喻点击按钮或键盘按键。然而,偶然辰咱们也需要移除已经增添的事情监听器。本文将引见几种常用的办法来移除 JavaScript 中的事情监听器。
办法一:行使removeEventListener()
removeEventListener() 办法许可您从特定的事情方向(如元素或文档)中移除事情监听器。这是最常用和举荐的办法之一。
// 创建一个事情监听器function handleClick() { console.log('按钮被点击了!');}// 将事情监听器增添到按钮上var button = document.getElementById('myButton');button.addEventListener('click', handleClick);// 在需要的时辰移除事情监听器button.removeEventListener('click', handleClick);1234567891011
在上面的代码中,咱们最后界说了一个事情监听器 handleClick(),然后行使 addEventListener() 将它增添到 id 为 “myButton” 的按钮上。结尾,咱们行使 removeEventListener() 办法将事情监听器从按钮上移除。
办法二:行使匿名函数
除了将具名函数作为事情监听器,咱们还可以行使匿名函数来增添事情监听器。在这种境况下,移除事情监听器的办法稍有分别,咱们需要在移除时行使雷同的匿名函数。
// 增添匿名函数作为事情监听器var button = document.getElementById('myButton');button.addEventListener('click', function() { console.log('按钮被点击了!');});// 在需要的时辰移除事情监听器button.removeEventListener('click', function() { console.log('按钮被点击了!');}); // 这里的移除不会成效// 精确的移除体式格局是行使具有引用的函数var handleClick = function() { console.log('按钮被点击了!');};button.addEventListener('click', handleClick);button.removeEventListener('click', handleClick); // 如此可以胜利移除事情监听器123456789101112131415161718
需要留心的是,要是咱们干脆在 removeEventListener() 中行使匿名函数,那么事情监听器将无法被精确移除。这是由于每次创建匿名函数时,现实上都市创建一个新的函数实例。因此,咱们需要先将匿名函数赋值给一个具有引用的变量,然后在移除时行使该变量。
办法三:行使事情委托
事情委托是一种在父元素上增添事情监听器来处置子元素事情的技巧。经过这种体式格局,咱们可以防止为每个子元素都增添事情监听器,也便利移除事情监听器。
// 增添事情委托var parentElement = document.getElementById('parentElement');function handleClick(event) { if (event.target.classList.contains('childElement')) { console.log('子元素被点击了!'); }}parentElement.addEventListener('click', handleClick);// 在需要的时辰移除事情委托parentElement.removeEventListener('click', handleClick);12345678910111213
在上面的代码中,咱们将事情监听器增添到父元素上,并在事情处置函数中查抄事情方向是否是咱们感兴趣的子元素。要是是,咱们施行相应的操纵。这种体式格局下,咱们只需要在父元素上增添和移除事情监听器,而无需为每个子元素都增添监听器。
总结
本文引见了三种常用的办法来移除 JavaScript 中的事情监听器。行使 removeEventListener() 是最多见和举荐的体式格局,可以干脆移除具名函数作为事情监听器的境况。看待匿名函数,咱们需要先将其赋值给具有引用的变量,然后再移除。其余,事情委托是一种有用的体式格局,可以简化代码并便利移除监听器。
留心:在移除事情监听器时,确保行使雷同的函数和参数,不然监听器将无法被精确地移除。
声明:
1、本博客不从事任何主机及服务器租赁业务,不参与任何交易,也绝非中介。博客内容仅记录博主个人感兴趣的服务器测评结果及一些服务器相关的优惠活动,信息均摘自网络或来自服务商主动提供;所以对本博客提及的内容不作直接、间接、法定、约定的保证,博客内容也不具备任何参考价值及引导作用,访问者需自行甄别。
2、访问本博客请务必遵守有关互联网的相关法律、规定与规则;不能利用本博客所提及的内容从事任何违法、违规操作;否则造成的一切后果由访问者自行承担。
3、未成年人及不能独立承担法律责任的个人及群体请勿访问本博客。
4、一旦您访问本博客,即表示您已经知晓并接受了以上声明通告。
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
【免责声明】:主机测评网所有内容均来自网络,安全性未知,使用前请自行甄别。因个人自愿选择使用本站介绍的资源造成的损失由使用者承担!本站不销售产品、不代购、不提供技术支持,仅分享信息,请遵纪守法、文明上网。
© 2012-2024 Powered by:thinkphp8 蜀ICP备18021953号-3
广告联系:QQ:1564952 注明:广告联盟评测网广告