2011-07-16 14 views
8

Mam <div> element, który ma zdarzenie click dołączony do niego za pomocą następującego kodu:Jak usunąć zdarzenie kliknięcia z elementu w JavaScript?

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

W późniejszym momencie skopiować element i dodać go do innej części DOM, ale trzeba najpierw usunąć click wydarzenie nie jestem pewien, jak odwołać się do słuchacza i jak dotąd nic próbowałem usunęła zdarzenia z elementu

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

.

Wszelkie pomysły?

Cheers

Stewart

Odpowiedz

6

Move anonimowa funkcja click obsługi z zaproszenia addEventListener:

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

po którym powinien być w stanie:

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

Trudność to może być wiele elementów z tym EventListener wt on DOM w dowolnym momencie, każdy z własną wartością id. W związku z tym nie mogę utworzyć jednej globalnej zmiennej elemEventHandler. Kod dodający detektor zdarzeń ma swoją własną funkcję, do której przekazywany jest identyfikator. Jak mogę to obejść? –

+0

@Stayart. Jest całkiem możliwe, aby odwołać się do tego samego programu obsługi dla wielu elementów i usunąć odniesienie dla jednego z nich. Przygotowałem przykład w jsfiddle, aby zademonstrować, że: http://jsfiddle.net/KooiInc/qQv9K/ - w którym można również zobaczyć, jak pobrać identyfikator klikniętego elementu, przy okazji – KooiInc

+0

@Koolinc - dziękuję. Wygląda dobrze, miał szybką grę i nadal ma problemy, ale poświęci temu trochę więcej czasu i zaktualizuje wątek. –

Powiązane problemy