Так всё же, как навесить на элемент событие, которое сработает один раз?
Да очень просто: используйте именованные функции для обратного вызова (коллбэка) и передавайте ссылку на них в добавление и удаление слушателей:
const d = document;
function a(event) {
d.removeEventListener(‘click’, a);
}
d.addEventListener(‘click’, a);Но фишка в том, что именовать коллбэк можно прямо в месте его вызова, а не только объявления! См. иллюстрацию. Особенно удобно при переборе элементов.
P. S. мне тут подсказали, мол: «Так-то можно передать {once: true}». Да, можно. Я то ли забыл, то ли вообще не знал.
Но что если вам нужно снять слушателя по некому условию?
Вот-вот 😊
Ну и естественно, именованные коллбэки вообще штука мощная.
#js #dom #events
