@vadim_tur

Лучшая практика: как лучше подписываться на события?

Использую ООП и jquery для подписки на события, в файлах вк заметил что подписка на события происходит в html при помощи onclick, onmousedown, etc. Вот и возник впроброс, как лучше подписываться? Какие + и - у этих методов?
  • Вопрос задан
  • 187 просмотров
Решения вопроса 1
k12th
@k12th
console.log(`You're pulling my leg, right?`);
Подписка на события через атрибуты HTML-элементов плоха двумя вещами:
1) Происходит смешивание разметки и поведения. Это значит, что для того, чтобы разобраться, что происходит, надо попеременно заглядывать в *.html и в *.js, больше шансов что-то нечаянно сломать или допустить глупую ошибку типа опечатки.
2) Через атрибут больше одного обработчика не повесишь.

Однако, при всем вышесказанном, это может быть удобно, если кода крайне мало. Если у вас вся страничка состоит из калькулятора с тремя полями и двумя кнопками, нет смысла подключать туда фреймворк и фанатично соблюдать все лучшие практики.

в файлах вк заметил
Разработчики VK, несмотря на невероятную раскрученность сервиса, обыкновенные говнякеры, по крайней мере, в части фронтенда.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
IonDen
@IonDen
JavaScript developer. IonDen.com
$('.element').on('eventName', function () {...}); // обычная подписка
$(document).on('eventName', '.element', function () {...}); // делегирование событий
Ответ написан
In4in
@In4in
°•× JavaScript Developer ^_^ ו°
Единственно, что я стараюсь подписывать через HTML, так это волшебное return false, да и только по причине затруднений с IE (event.returnValue/preventDefaullt, а так же e||event).

Вешать что-то иное не вижу смысла, это очень не удобно. Начиная с того. что в функцию не передается контекст, заканчивая ограничением на всего 1 обработчик. К тому же, придется либо забивать window, создавая множество функций в глобальной области видимости, либо засунуть все обработчики в один объект в качестве методов и усложнить себе жизнь. Но все же, главное неудобство в том, что в случае чего придется бежать в HTML смотреть что делает определенная функция, а если разные его части еще и на файлы разбиты...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы