@Madislav

Как правильно обрабатывать события в JavaScript?

Всем привет. Тренируюсь в создании интерфейсов и возник вопрос... Как правильно обрабатывать события?
Точнее как правильно и грамотно написать код, когда элементов куда можно нажать очень много.
Пока вижу 2 варианта и хочу узнать может есть какой-то идеальный способ для реализации.

1. Для каждого элемента куда можно нажать создать отдельный addEventListener
В итоге получится тьма повторяющихся строчек

2. Создать один addEventListener который будет вызывать функцию при любом нажатии, которая вытаскивает id элемента, если есть, и ищет совпадение этого id в массиве всех id. Затем если есть совпадение - вызывается соответствующую функцию этому id.

Как-то так :DD надеюсь объяснил более-менее понятно.

Очень жду ответов по этому поводу, заранее спасибо!
  • Вопрос задан
  • 143 просмотра
Решения вопроса 1
bubandos
@bubandos
bash'у, javascript'ую, php'лю, css'аю, html'каю
Почитайте про всплытие событий и паттерн "behavior".
Суть проста: на родительский блок вешается обработчик всплывающего события, в котором проверяется target/currentTarget и на основании их значений уже выполняются нужные действия.

https://learn.javascript.ru/behavior
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
aleksand44
@aleksand44
В целом конечно же лучше всегда использовать подход, где с меньшим количества повторяющегося кода вы элегантно обрабатываете большее кол-во действий.
Хочу лишь заметить, что в профессиональной ЖС-разработке почти нет случаев когда у вас есть одна страница со множеством элементов и один скрипт где вы все это описываете.
Профессиональная разработка предполагает использование фреймворков и библиотек с разбиением на компоненты, модули, виджеты, общающиеся между собой и организующиеся в одну систему и такие вопросы там не стоят.
Ответ написан
Комментировать
@frees2
Пример где на событие можно прописать ещё событие, внутри события... Работает как часы.
<nav>
<ul>
<li  tabindex="1"><a  id="10000000000"  data-page="page1"> 1  страница</a></li>
<li  tabindex="1"><a  id="1111111111111111"  data-page="page1"> 1 1  страница</a></li>
<li  tabindex="1"><a  id="20000000000"  data-page="page2"> 2  страница</a></li>
<li  tabindex="1"><a  id="30000000000"  data-page="page3"> 3 стрнаница</a></li>
</ul>
</nav>

Где id выводится
'+event.target.id+'
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Сбер Санкт-Петербург
от 250 000 ₽
NewGen Vision Санкт-Петербург
от 30 000 до 60 000 ₽
от 3 000 до 4 500 €