Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.04.2019, 12:28
Новичок на форуме
Отправить личное сообщение для alexmix Посмотреть профиль Найти все сообщения от alexmix
 
Регистрация: 02.04.2019
Сообщений: 4

Обработчик кликов на body
Подскажите, пожалуйста, насколько хорош или плох такой подход, принято ли так вообще делать.

На "document.body" вешаем обработчик кликов, который при всплытии клика делает так:
1. Вычисляет элемент, который кликнули.
2. У этого элемента считывает значение атрибута, например, "data-run" (значение атрибута = имя функции, которую надо вызвать).
3. Вызывает функцию-обработчик, если она существует.

HTML код элементов, которые по клику что-то делают, выглядит, например, так:
<div data-run="click">...</div>
...
<div data-run="popup">...</div>
...
<div data-run="dropdown">...</div>
Ответить с цитированием
  #2 (permalink)  
Старый 02.04.2019, 13:04
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Сообщение от alexmix
принято ли так вообще делать.
Делегирование событий
Ответить с цитированием
  #3 (permalink)  
Старый 02.04.2019, 14:41
Новичок на форуме
Отправить личное сообщение для alexmix Посмотреть профиль Найти все сообщения от alexmix
 
Регистрация: 02.04.2019
Сообщений: 4

рони, благодарю. Конечно же читал :-)

Немного дополню вопрос - принято ли так делать вообще для всех click событий страницы (сайта)? Может это плохая практика? Или я не вижу (пока) каких-то недостатков в этом подходе?

Преимущества вижу следующие:
1. Не надо бегать по DOM'у и навешивать onclick'и. HTML загрузили - и сразу все работает.
2. Если вставили HTML в DOM javascript'ом - так же не надо вешать обработчик.
3. Если очень много элементов, на которых надо обрабатывать клики (например, несколько сотен/тысяч строк таблицы).

В итоге меньше кода (сокращаем лишние onclick, addEventListener) и меньше дорогостоящих манипуляций с DOM.
Ответить с цитированием
  #4 (permalink)  
Старый 02.04.2019, 16:41
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,005

Реакт, например, так делает - все onClick в пропсах элементов на самом деле вызываются из обработчика, висящего на документе
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по clientWidth для элемента body shurik_shink Элементы интерфейса 1 04.05.2016 19:50
Откуда начинается фон body? kostyanet (X)HTML/CSS 8 14.04.2015 04:50
Обработчик кликов. Duda.Ml1986@gmail.com jQuery 5 18.04.2014 18:58
Как заставить выполняться обработчик после всех имеющихся обработчиков данного элемен Анатолий Саратовцев jQuery 2 08.10.2012 18:49
Как "обмануть" обработчик события? itPiligrim Events/DOM/Window 0 13.05.2010 22:55