Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

232
Vistas
Eliminación de EventListeners con parámetros

Estoy tratando de eliminar un detector de eventos con parámetros. Entendí que pasar argumentos al asignar un oyente no funcionaría, así que finalmente trabajé en una forma de eliminar los argumentos para la asignación del oyente. Pero todavía no funciona.

Realmente no estoy seguro de dónde buscar a continuación.

Aquí está el código (he eliminado todo lo que no tiene nada que ver con el problema)

 let activeItemOnTheMove = false; activeItem.addEventListener('click', e=>{ const defineOnMouseMove = () => { onMouseMove(activeItem) }; if(!activeItemOnTheMove){ document.addEventListener('mousemove', defineOnMouseMove); activeItemOnTheMove = true; }else{ document.removeEventListener('mousemove', defineOnMouseMove); activeItemOnTheMove = false; } }) function onMouseMove(activeItem){ activeItem.style.position ='absolute'; activeItem.style.left = event.pageX + 'px'; activeItem.style.top = event.pageY + 'px'; activeItem.style.transform = 'translate(-50%,-50%)' }

(Estoy usando vainilla javascript)

He leído estas respuestas, así es como entendí que no podía usar una función anónima. Pero no estoy seguro de entender el fundamento de por qué no funciona.

  • Adición y eliminación de detectores de eventos con parámetros
  • Agregue un detector de eventos con parámetros y luego elimínelo
  • Javascript removeEventListener no funciona
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

así entendí que no podía usar una función anónima

No importa si la función es anónima o no. Lo que importa es usar la misma función con addEventListener y removeEventListener . Su código no está haciendo eso, está usando una nueva función con removeEventListener , que no hace nada porque esa función no está registrada como un detector de eventos (es solo que es una función diferente con el mismo código).

Como tiene que recordar la función, también puede usar esa variable como su bandera si lo desea:

 let activeMouseMoveHandler = null; // *** A variable to remember the function in activeItem.addEventListener('click', e => { if (!activeMouseMoveHandler) { activeMouseMoveHandler = () => { onMouseMove(activeItem) }; document.addEventListener("mousemove", activeMouseMoveHandler); } else { document.removeEventListener("mousemove", activeMouseMoveHandler); } });
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda