removeEventListener的行为

Gau*_*han 10 javascript javascript-events

请检查以下代码,

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

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

为什么removeEventListener不起作用?

谢谢!

Cer*_*rus 8

removeEventListener需要2个参数,事件和要删除的功能.
这应该工作:

document.getElementById("div1").removeEventListener("click", clickfn);
Run Code Online (Sandbox Code Playgroud)

此外,您正在执行的功能是空的.

var clickfn = function(){  };
Run Code Online (Sandbox Code Playgroud)


use*_*118 6

您必须指定您指定的确切函数addEventListener作为第二个参数.如果指定了第三个useCapture参数,则必须指定相同的和等效的参数removeEventListener.

例如:

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 );
Run Code Online (Sandbox Code Playgroud)

在jsFiddle上查看示例

您可以在Mozilla Developer wiki中找到更多信息.