2012-11-20 9 views
8

Bitte den Code unten überprüfen,Verhalten von 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/

Warum die removeEventListener funktioniert nicht?

Danke!

+0

Mit [removeEventListener] (https://developer.mozilla.org/en-US/docs/DOM/element.removeEventListener) sind zwei Argumente erforderlich. Nur das dritte Argument ist optional. – apsillers

+0

Related: [Wie alle Zuhörer in einem Element zu entfernen?] (Http://stackoverflow.com/questions/9251837/how-to-remove-all-listeners-in-an- element) – apsillers

Antwort

6

braucht 2 Parameter, das Ereignis und die zu entfernende Funktion.
Dies sollte funktionieren:

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

Auch die Funktion, die Sie ausführen leer.

var clickfn = function(){ }; 
+1

Ok danke, dachte ich removeEventListener ("click") entfernt alle daran gebundenen Funktionen –

6

Sie haben die genaue Funktion zu spezifizieren, die Sie addEventListener als zweites Argument angegeben haben. Wenn Sie das dritte Argument useCapture angegeben haben, müssen Sie dasselbe und das Äquivalent zu angeben.

Zum Beispiel:

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

Sie können weitere Informationen auf der Mozilla Developer wiki finden.

Verwandte Themen