Maison > interface Web > js tutoriel > le corps du texte

Comment supprimer tous les écouteurs d'événements d'un objet DOM en JavaScript : un guide complet

Patricia Arquette
Libérer: 2024-10-25 02:12:30
original
819 Les gens l'ont consulté

How to Remove All Event Listeners from a DOM Object in JavaScript: A Comprehensive Guide

Javascript/DOM : Comment supprimer tous les écouteurs d'événements d'un objet DOM

La question se pose : comment supprimer complètement tous les événements de un objet, comme un div ? En particulier, la requête concerne un événement ajouté à l'aide de per div.addEventListener('click', eventReturner(), false);.

Suppression de tous les gestionnaires d'événements

Si l'intention est d'éliminer tous les gestionnaires d'événements (quel que soit leur type) d'un élément, envisagez la méthode suivante :

var clone = element.cloneNode(true);
Copier après la connexion

Cette technique préserve les attributs et les enfants sans affecter les modifications des propriétés DOM.

Suppression des gestionnaires d'événements anonymes d'un type spécifique

L'approche alternative consiste à utiliser la méthode removeEventListener(), mais elle peut ne pas fonctionner lorsqu'il s'agit de fonctions anonymes. Le problème clé ici est que l'appel de addEventListener avec une fonction anonyme attribue un écouteur unique à chaque fois que la fonction est invoquée. Par conséquent, tenter de supprimer le gestionnaire d'événements en utilisant la même référence de fonction n'a aucun effet.

Pour résoudre cette limitation, envisagez ces deux alternatives :

  1. Utiliser une fonction nommée :
function handler() {
     dosomething();
 }

 div.addEventListener('click',handler,false);
Copier après la connexion
  1. Créer une fonction Wrapper :
var _eventHandlers = {}; // somewhere global

const addListener = (node, event, handler, capture = false) => {
   if (!(event in _eventHandlers)) {
     _eventHandlers[event] = []
   }
   _eventHandlers[event].push({ node: node, handler: handler, capture: capture })
   node.addEventListener(event, handler, capture)
 }
...
addListener(div, 'click', eventReturner(), false)
Copier après la connexion

Cette approche permet de créer un wrapper fonction qui stocke une référence à l’écouteur d’événement ajouté. La fonction RemoveAllListeners correspondante peut ensuite être utilisée pour supprimer ces gestionnaires.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!