Метод EventTarget.removeEventListener()
удаляет из EventTarget прослушиватель событий, ранее зарегистрированный в EventTarget.addEventListener (). Прослушиватель событий, который необходимо удалить, идентифицируется с использованием комбинации типа события, самой функции прослушивателя событий и различных необязательных параметров, которые могут повлиять на процесс сопоставления.
Поскольку вы используете Function#bind
, метод bind()
создает новую функцию , для которой при вызове для этого ключевого слова установлено заданное значение с заданным значением последовательность аргументов, предшествующих любым, указанным при вызове новой функции.
Следовательно, при использовании removeEventListener
вы не передаете ту же ссылку функции, которая была добавлена для addEventListener
.
Кэшировали Handler function
в переменной, которую можно использовать как для addEventListener
, так и для removeEventListener
let handlerFunction = handler.bind(null, name, callback);
document.addEventListener(name, handlerFunction, false);
document.removeEventListener(name, handlerFunction, false);