在尝试删除eventHandler之前是否需要/建议检查它是否存在?
问题描述:
我有这样的事情:在尝试删除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
调用,或者做一些不需要有外部变量的东西。
答
https://developer.mozilla.org/en/DOM/element.removeEventListener
调用removeEventListener()与不认同任何当前注册的EventListener的事件目标没有任何效果参数。
1参考http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-EventTarget-removeEventListener – Andrew 2012-03-28 16:51:19
[这](HTTP://www.w3 .org/TR/DOM-Level-2-Events/events.html#Events-EventTarget-removeEventListener)文档链接可能是一个更好的参考选择(尽管MDN也相同)。 – Jon 2012-03-28 16:51:45