Javascript removeEventListener 不工作
嘗試在Javascript 中向元素添加和刪除事件偵聽器時,removeEventListener 函數可能無法按預期工作函數可能無法按預期工作函數可能無法按預期工作函數可能無法按預期工作函數可能無法按預期工作函數可能無法按預期工作函數可能無法按預期工作函數可能無法按預期工作函數可能無法按預期工作函數可能無法按預期工作函數可能無法按預期工作函數可能無法按預期工作函數可能無法按預期工作函數可能無法按預期工作函數可能無法按預期工作功能。當作為removeEventListener的第二個參數提供的匿名函數與最初指派給addEventListener的函數參考不同時,就會出現此問題。
理解問題
中根據提供的程式碼,使用匿名函數附加和刪除事件偵聽器:
area.addEventListener('click', function(event) { ... }, true); area.removeEventListener('click', function(event) { ... }, true);
但是,這些匿名函數是完全不同的物件。儘管它們可能執行相同的任務,但它們不是相同的引用。
解決方案
要正確刪除事件偵聽器,您必須提供與用於新增監聽器。在 addEventListener 和 removeEventListener 呼叫外部定義命名函數:
function foo(event) { app.addSpot(event.clientX, event.clientY); app.addFlag = 1; } area.addEventListener('click', foo, true); area.removeEventListener('click', foo, true);
透過執行此操作,removeEventListener 函數可以識別最初附加的函數參考並成功分離事件偵聽器。
以上是為什麼我的 JavaScript removeEventListener 不工作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!