2012-02-16 23 views
1

我有一個使用addEventListener附加事件處理程序的DOM元素。當我想用removeEventListener將其刪除時,我不再提及處理事件的函數。
如何刪除事件偵聽器,而不是將引用存儲到全局的所有事件處理程序?如何在不引用處理函數的情況下刪除事件處理程序?

我注意到,如果我使用Chrome開發人員工具編輯DOM元素,則不再處理事件。一個可行的解決方案是否在於此?

我沒有使用和無法在這種特殊情況下使用類似jQuery的庫。

回答

0

你不能;你需要那個參考。或者像您建議的那樣將其存儲在全球範圍內,或者像Aaron Digulla所說的那樣將其存儲在DOM元素中。

1

商店中的DOM元素的事件處理程序的引用:

e.handlerToRemove = handler; 
e.addEventListener(..., handler); 

後來:

e.removeEventListener(e.handlerToRemove);