是否有必要/建议在尝试删除之前检查eventHandler是否存在?

时间:2012-03-28 16:46:02

标签: javascript events

我有这样的事情:

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电话,或者做一些不需要外部变量的事情。

1 个答案:

答案 0 :(得分:8)

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

  

使用不识别EventTarget上任何当前已注册的EventListener的参数调用removeEventListener()无效。