Необходимо / желательно проверить, существует ли eventHandler, прежде чем пытаться удалить его? - PullRequest
5 голосов
/ 28 марта 2012

У меня есть что-то вроде этого:

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 Ответ

8 голосов
/ 28 марта 2012

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

Вызов removeEventListener () с аргументами, которые не идентифицируют какой-либо зарегистрированный в настоящее время EventListener в EventTarget, не имеет никакого эффекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...