簡體   English   中英

removeEventListener不起作用

[英]removeEventListener not working

添加監聽器

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

一切正常,在控制台中沒有錯誤,單擊按鈕仍然有效,但是單擊后並未將其刪除

根據文檔 ,我的猜測是事件處理程序應該引用相同的函數:

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

簡單的小提琴例子

我猜您應該使用對function() { clickKbButton(this); }的變量引用function() { clickKbButton(this); } function() { clickKbButton(this); }addEventListenerremoveEventListener中的兩個函數實際上是兩個不同的函數。

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

然后在添加和刪除偵聽器時使用此處理程序變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM