0

添加监听器

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"
    }

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

4

2 回答 2

4

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

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

简单的小提琴示例

于 2013-09-30T03:35:35.163 回答
2

我想您应该使用对 的变量引用function() { clickKbButton(this); },您的addEventListener&removeEventListener中的两个函数实际上是两个不同的函数。

var handler = function() { clickKbButton(this) };

然后在添加和删除侦听器时使用此处理程序变量。

于 2013-09-30T03:34:49.627 回答