Обработчик кликов на body
Подскажите, пожалуйста, насколько хорош или плох такой подход, принято ли так вообще делать.
На "document.body" вешаем обработчик кликов, который при всплытии клика делает так: 1. Вычисляет элемент, который кликнули. 2. У этого элемента считывает значение атрибута, например, "data-run" (значение атрибута = имя функции, которую надо вызвать). 3. Вызывает функцию-обработчик, если она существует. HTML код элементов, которые по клику что-то делают, выглядит, например, так: <div data-run="click">...</div> ... <div data-run="popup">...</div> ... <div data-run="dropdown">...</div> |
Цитата:
|
рони, благодарю. Конечно же читал :-)
Немного дополню вопрос - принято ли так делать вообще для всех click событий страницы (сайта)? Может это плохая практика? Или я не вижу (пока) каких-то недостатков в этом подходе? Преимущества вижу следующие: 1. Не надо бегать по DOM'у и навешивать onclick'и. HTML загрузили - и сразу все работает. 2. Если вставили HTML в DOM javascript'ом - так же не надо вешать обработчик. 3. Если очень много элементов, на которых надо обрабатывать клики (например, несколько сотен/тысяч строк таблицы). В итоге меньше кода (сокращаем лишние onclick, addEventListener) и меньше дорогостоящих манипуляций с DOM. |
Реакт, например, так делает - все onClick в пропсах элементов на самом деле вызываются из обработчика, висящего на документе
|
Часовой пояс GMT +3, время: 13:20. |