removeEventListener不起作用

时间:2013-09-30 03:30:31

标签: javascript

添加监听器

for ( i = 0; i < kbButtons.length; i++ ) {
        kbButtons[i].addEventListener("click", function() { clickKbButton( this ); }, false);
    }

应删除侦听器

function clickKbButton ( elem ) { 
    elem.removeEventListener("click", function() { clickKbButton( this ); }, false);
    elem.id = "invis"
    }

一切正常,控制台没有错误,按钮点击有效但点击后没有删除

2 个答案:

答案 0 :(得分:4)

根据documentation,我的猜测是事件处理程序应该引用相同的函数:

for ( i = 0; i < kbButtons.length; i++ ) {
    kbButtons[i].addEventListener("click", clickKbButton, false);
}
function clickKbButton ( ev ) { 
    this.removeEventListener("click", clickKbButton, false);
    this.id = "invis"
}

Simple fiddle example

答案 1 :(得分:2)

我猜你应该使用function() { clickKbButton(this); }的变量引用,addEventListenerremoveEventListener中的两个函数。 var handler = function() { clickKbButton(this) }; 实际上是两个不同的功能。

{{1}}

然后在添加&amp;时使用此处理程序变量删除监听器。