Мне кажется такая структура кода странной. Структура убогая и неудобная, но распространённая. Как по мне, так "так верстают только мудаки".
Есть такая проблема: на любую задачу есть готовое решение, которое немного не подходит. Вот мне нужно выделение, и я думаю: "Надо взять готовое решение!" Нахожу, внедряю и тут мне говорят: "Нужно, чтобы внизу был счётчик выбранных элементов."
- Ну, - думаю я. - Отлично! Это ж
класс. Создам дочерний класс с нужным мне функционалом...
Хренцы-бубенцы! Наследованием проблему не решить.
Тогда многие дают при инициализации передать типа обработчики на "внутренние события" (стандартный для jQ-плагинов паттерн с объектом options). Но такой вариант мне тоже кажется туповатым.
Мне кажется, что в решениях, где вся суть в манипуляциях с DOM-элементами, необходимо чтобы на каждую манипуляцию происходило соответствующее событие. Тогда, чтобы добавить счётчик, нужно сделать что-то вроде того:
$(".some-container").on({
select: function () {
$(".counter", this).html($(".counter", this).html() + 1);
},
unselect: function () {
$(".counter", this).html($(".counter", this).html() - 1);
}
});
Это псевдо-быдлокод, чтобы уловить идею.