Вам нужно объявить функцию, чтобы удалить ее.Это связано с тем, что вам нужно ссылаться на него после удаления, чтобы браузер мог распознать, какое событие удалить.
Это не будет работать:
btn.addEventListener("click", function() { alert("clicked") });
btn.removeEventListener("click", function() { alert("clicked") });
, поскольку нет ссылки на функцию.Каждая функция уникальна, даже если в них содержится один и тот же код.
Если вы объявите функцию, вы можете сохранить ссылку на эту функцию, а затем удалить ее:
function clickEvent() {
alert("clicked!");
}
btn.addEventListener("click", clickEvent);
btn.removeEventListener("click", clickEvent);
Вотпример:
let $ = document.querySelector.bind(document),
btn = $("#b1"),
add = $("#b2"),
remove = $("#b3");
function clickEvent() {
alert("click");
}
btn.addEventListener("click", clickEvent);
remove.addEventListener("click", function() {
btn.removeEventListener("click", clickEvent);
alert("event removed!");
});
add.addEventListener("click", function() {
btn.addEventListener("click", clickEvent);
alert("event added!");
});
<button id="b1">click me</button>
<p/>
<button id="b2">Add Event Listener</button> <button id="b3">Remove Event Listener</button>