2012-03-28 102 views
1

我有這樣的事情:在嘗試刪除eventHandler之前是否需要/建議檢查它是否存在?

if (something) { 
    init(); 
} else { 
    document.addEventListener('CUSTOM_EVENT', init, false); 
} 

var init = function() { 
    document.removeEventListener('CUSTOM_EVENT', init, false); 
    // do stuff 
} 

我是否需要添加某種檢查周圍的removeEventListener電話嗎?如果是這樣,我可以這樣做:

var eventAdded = false; 
if (something) { 
    init(); 
} else { 
    document.addEventListener('CUSTOM_EVENT', init, false); 
    eventAdded = true; 
} 

var init = function() { 
    if (eventAdded) { 
     document.removeEventListener('CUSTOM_EVENT', init, false); 
    } 
    // do stuff 
} 

但這感覺有點不雅。如果沒有什麼大不了的話,我寧願留下原始的removeEventListener調用,或者做一些不需要有外部變量的東西。

回答

5

https://developer.mozilla.org/en/DOM/element.removeEventListener

調用removeEventListener()與不認同任何當前註冊的EventListener的事件目標沒有任何效果參數。

+1

1參考http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-EventTarget-removeEventListener – Andrew 2012-03-28 16:51:19

+0

[這](HTTP://www.w3 .org/TR/DOM-Level-2-Events/events.html#Events-EventTarget-removeEventListener)文檔鏈接可能是一個更好的參考選擇(儘管MDN也相同)。 – Jon 2012-03-28 16:51:45

相關問題