Поведение 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/

Почему removeEventListener не работает?

Спасибо!

2 8

2 ответа:

removeEventListener принимает 2 параметра, событие и функцию для удаления.
Это должно сработать:

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

Кроме того, функция, которую вы выполняете, пуста.

var clickfn = function(){  };

Вы должны указать точную функцию, которую вы указали для 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 );

посмотрите пример в jsFiddle

Вы можете найти дополнительную информацию на страницеMozilla Developer wiki .