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

Comment puis-je supprimer les écouteurs d'événements des objets DOM en JavaScript ?

Barbara Streisand
Libérer: 2024-10-25 05:46:02
original
261 Les gens l'ont consulté

How Can I Remove Event Listeners from DOM Objects in JavaScript?

Suppression des écouteurs d'événements des objets DOM

Suppression de tous les gestionnaires d'événements

Pour supprimer tous les gestionnaires d'événements d'un objet, vous pouvez cloner l'élément et le remplacer avec le clone :

<code class="javascript">var clone = element.cloneNode(true);</code>
Copier après la connexion

Cette méthode préserve les attributs et les enfants, mais pas les modifications des propriétés DOM.

Suppression des gestionnaires d'événements avec des fonctions anonymes

Vous pouvez supprimer l'événement gestionnaires avec des fonctions anonymes en stockant une référence à la fonction renvoyée et en créant une fonction distincte pour supprimer tous les événements :

<code class="javascript">var _eventHandlers = {};

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)
}

const removeAllListeners = (targetNode, event) => {
  _eventHandlers[event]
    .filter(({ node }) => node === targetNode)
    .forEach(({ node, handler, capture }) => node.removeEventListener(event, handler, capture))

  _eventHandlers[event] = _eventHandlers[event].filter(
    ({ node }) => node !== targetNode,
  )
}</code>
Copier après la connexion

Cela vous permet d'ajouter et de supprimer des écouteurs d'événements en utilisant :

<code class="javascript">addListener(div, 'click', eventReturner(), false)
removeAllListeners(div, 'click')</code>
Copier après la connexion

Gestion directe des événements

Si vous utilisez une fonction anonyme pour gérer les événements, vous pouvez simplement l'ajouter et la supprimer directement :

<code class="javascript">function handler() {
  dosomething();
}

div.addEventListener('click',handler,false);</code>
Copier après la connexion

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!