Старый вопрос, но здесь есть решение.
Строго говоря, вы не можете удалить анонимный прослушиватель событий, если не сохраните ссылку на функцию.Поскольку целью использования анонимной функции является, по-видимому, не создание новой переменной, вместо этого вы можете сохранить ссылку в самом элементе:
element.addEventListener('click',element.fn=function fn() {
// Event Code
}, false);
Позже, когда вы захотите удалить ее, вы можете выполнитьследующее:
element.removeEventListener('click',element.fn, false);
Помните, что третий параметр (false
) должен иметь такое же значение , что и для добавления прослушивателя событий.
Однако сам вопроснапрашивается другое: почему?
Есть две причины использовать .addEventListener()
вместо более простого .onsomething()
метода:
Во-первых, он позволяет множественным прослушивателям событий бытьдобавлено.Это становится проблемой, когда дело доходит до их выборочного удаления: вы, вероятно, в конечном итоге назовете их.Если вы хотите удалить их все, то решение @ 10id * @ tidy-гиганта отлично.
Во-вторых, у вас есть возможность выбрать захват, а не всплывающее событие.
Еслини одна из причин не важна, вы можете решить использовать более простой метод onsomething
.