2012-11-20 5 views
8

Si prega di verificare il codice qui sotto,Comportamento di removeEventListener

var clickfn = function(){ 
alert("clicked");      
} 
document.getElementById("div1").addEventListener("click",clickfn,true); 
clickfn = function(){ }; 
document.getElementById("div1").removeEventListener("click"); 

http://jsfiddle.net/qUtzL/4/

Perché la removeEventListener non funziona?

Grazie!

+0

Con [removeEventListener] (https://developer.mozilla.org/en-US/docs/DOM/element.removeEventListener), sono richiesti due argomenti; solo il terzo argomento è facoltativo. – apsillers

+0

Correlati: [Come rimuovere tutti gli ascoltatori in un elemento?] (Http://stackoverflow.com/questions/9251837/how-to-remove-all-listeners-in-an-element) – apsillers

risposta

6

removeEventListener accetta 2 parametri, l'evento e la funzione da rimuovere.
questo dovrebbe funzionare:

document.getElementById("div1").removeEventListener("click", clickfn); 

Inoltre, la funzione che si sta eseguendo è vuota.

var clickfn = function(){ }; 
+1

Ok grazie, ho pensato che removeEventListener ("click") rimuoverà tutte le funzioni ad esso associate. Il mio male –

6

È necessario specificare l'esatta funzione che hai specificato al addEventListener come secondo argomento. Se hai specificato il terzo argomento useCapture, dovrai specificare lo stesso ed equivalente a removeEventListener.

Ad esempio:

function myFunc(event){ alert(event.target.textContent); } 

var myElement=document.getElementById('myElement'); 

//Add EventListener 
myElement.addEventListener('click', myFunc, false); 

/* ... */ 

//Remove EventListener 
myElement.removeEventListener('click', myFunc, false); 

View an example at jsFiddle

È possibile trovare maggiori informazioni presso la Mozilla Developer wiki.