2011-07-16 10 views
8

que tienen un elemento <div> que tiene un evento de clic que se le atribuye con el siguiente código:¿Cómo puedo eliminar un evento de clic de un elemento en Javascript?

var id = "someId"; 
var elem = document.getElementById("elemId"); 
elem.addEventListener("click", function() { someFunction(id); }, false); 

En un momento posterior copio el elemento y añadirlo a otra parte de la DOM, pero que quitar primero click el caso

var elem = document.getElementById("elemId"); 
elem.removeEventListener("click", ???? , false); 

no estoy seguro de cómo hacer referencia al oyente y hasta ahora nada de lo que he probado ha eliminado el evento desde el elemento.

¿Alguna idea?

Saludos

Stewart

Respuesta

6

Mover la función de controlador click en el anonimato de la llamada addEventListener:

var id = "someId"; 
var elem = document.getElementById("elemId"); 
var elemEventHandler = function() { someFunction(id); }; 
elem.addEventListener("click", elemEventHandler , false); 

después de lo cual usted debe ser capaz de:

var elem = document.getElementById("elemId"); 
elem.removeEventListener("click", elemEventHandler , false); 
+0

La dificultad con es posible que haya múltiples elementos con este EventListener en t el DOM en cualquier momento, cada uno con su propio valor de identificación. Como tal, no puedo crear una sola variable global elemEventHandler. El código que agrega el detector de eventos se lleva a cabo en su propia función en la que se pasa el ID. ¿Cómo puedo evitar esto? –

+0

@Stewart. Es perfectamente posible hacer referencia al mismo controlador para una serie de elementos y eliminar esa referencia para uno de ellos. He cocinado un ejemplo en jsfiddle para demostrar que: http://jsfiddle.net/KooiInc/qQv9K/ - en el que también se puede ver cómo recuperar la identificación del elemento cliqueado, por cierto, – KooiInc

+0

@Koolinc - gracias. Se ve bien, tuvo un juego rápido y todavía tiene algunos problemas, pero le dedicará más tiempo a esto y luego actualizará el hilo. –

Cuestiones relacionadas