2012-03-28 103 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

相关问题