1. Вам не показалось, для функциональности лучше использовать data-атрибуты, что позволить использовать события без привязки к стилевому оформлению.
2. Навешивание нескольких обработчиков на одно событие в одном и том же узле — нормальная практика, если код в обработчиках не связан (не конфликтует с другими, код разных обработчиков не должен выполняться в строго определённом порядке). Это позволяет снимать тот ли иной обработчик при необходимости, не затрагивая работу остальных.
3. В динамически изменяющейся структуре предпочтительней использовать всплытие событий. Например, так:
$(document).on('click', 'selectors', function () {...});
Это позволит не дожидаться формирования
DOM для регистрации и при изменении структуры документа не будет неловких ситуаций, когда элемент вроде есть, но никому до этого дела нет.
4. Регистрация обработчика в конкретном узле позволяет остановить всплытие события. Это — одна из основных причин регистрации обработчиков не в
window или
document, а в конкретном узле.
Другая причина — не реагировать на события в однотипных узлах за пределами конкретного элемента. Пример — вы вставляете область, в которой и реализован функционал (например, область с картой).