JavaScript Eliminar todos los detectores de eventos

Shraddha Paghdar 12 octubre 2023
JavaScript Eliminar todos los detectores de eventos

La publicación de hoy enseñará cómo eliminar todos los detectores de eventos en JavaScript.

Eliminar todos los detectores de eventos en JavaScript

El método addEventListener() de la interfaz EventTarget configura una función para ser llamada cada vez que el evento especificado se entrega al objetivo.

El método addEventListener() funciona agregando una función u objeto que implementa el EventListener a la lista de detectores de eventos para el tipo de evento especificado en el EventTarget para el que se llama.

Si la función o el objeto ya está en la lista de detectores de eventos para ese destino, la función o el objeto no se agrega por segunda vez.

El método removeEventListener() de la interfaz EventTarget elimina un detector de eventos que se registró previamente del objetivo mediante EventTarget.addEventListener().

Llamar a removeEventListener() con argumentos que no identifican un EventListener actualmente registrado en el EventTarget no tiene ningún efecto.

El evento no se enviará si se elimina un EventListener de un EventTarget mientras otro oyente en el objetivo está procesando un evento. Sin embargo, se puede cambiar de posición.

Llamar a removeEventListener es fácil si solo uno o dos oyentes están registrados para elementos específicos. ¿Qué pasa si hay más de 10 detectores registrados y desea eliminar todos los detectores de eventos?

Requerirá esfuerzo; aprenderemos otro método para realizar esta tediosa operación para superar esto.

Veamos el ejemplo a continuación.

<div>
<button id="grt-btn">Hello World!</button>
<button onclick="removeListeners()">Remove listeners</button>
</div>
document.getElementById('grt-btn').addEventListener(
    'click', () => {console.log('firstClick')}, false);
document.getElementById('grt-btn').addEventListener(
    'blur', () => {console.log('Blur event')}, false);
document.getElementById('grt-btn').addEventListener(
    'focus', () => {console.log('focus event')}, false);

function removeListeners() {
  const oldBtnElement = document.getElementById('grt-btn');
  const newBtnElement = oldBtnElement.cloneNode(true);
  oldBtnElement.parentNode.replaceChild(newBtnElement, oldBtnElement);
  console.log('Removed all listners')
}

En el ejemplo anterior, hemos definido 2 botones. El primer botón es el que le adjuntará oyentes.

El segundo botón es el que eliminará a los oyentes del primer botón.

Hemos definido tres detectores de eventos; tan pronto como haga clic en el botón Hello World, activará los eventos focus y click. Intente navegar a otra pestaña; activará el evento desenfoque.

Y finalmente, haga clic en el botón Eliminar oyentes, que clonará el botón Hello World. El paso final es reemplazar el nodo secundario del elemento div con cloneNode.

Esto eliminará automáticamente todos los detectores de eventos asociados con el botón anterior.

Si intenta hacer clic en el botón Hello World nuevamente, no activará ningún evento.

Producción :

"focus event"
"firstClick"
"Blur event"
"focus event"
"Blur event"
"Removed all listeners"

Demostración aquí

Shraddha Paghdar avatar Shraddha Paghdar avatar

Shraddha is a JavaScript nerd that utilises it for everything from experimenting to assisting individuals and businesses with day-to-day operations and business growth. She is a writer, chef, and computer programmer. As a senior MEAN/MERN stack developer and project manager with more than 4 years of experience in this sector, she now handles multiple projects. She has been producing technical writing for at least a year and a half. She enjoys coming up with fresh, innovative ideas.

LinkedIn

Artículo relacionado - JavaScript Event