12

Please check the below code:

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

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

Why does the removeEventListener does not work?

4

3 に答える 3

11

removeEventListener削除するイベントと関数の 2 つのパラメーターを取ります。
これはうまくいくはずです:

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

また、実行している関数は空です。

var clickfn = function(){  };
于 2012-11-20T13:34:51.560 に答える
7

addEventListener2 番目の引数として指定した正確な関数を指定する必要があります。3 番目の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 );

jsFiddle で例を見る

詳細については、Mozilla Developer wikiを参照してください。

于 2012-11-20T13:35:48.577 に答える