Всем привет! У меня в макете есть разные выпадающие блоки, при клике на кнопку.
Так вешаю событие открытия блока
$('button').on('click', function(){
$(this).toggleClass('act');
$('div').toggleClass('act');
});
А так, скрываю блок, при клике за его пределами:
$(document).on('click', function(event){
var target = event.target;
var closeByDocument = function(docTarget, butTrigger, triggerElem, removeClass, butTriggerBullClass){
// docTarget - Элемент, при клике по документу
// butTrigger - Кнопка открытия элемента
// triggerElem - Открытие блока, при нажатии на кнопку
// removeClass - Имя удаляемого класса с блока и кнопки
// butTriggerBullClass - Удалять ли класс у кнопки
if(docTarget !== $(triggerElem)[0] && !$(triggerElem).has(docTarget).length && docTarget !== $(butTrigger)[0] && !$(butTrigger).has(docTarget).length){
$(triggerElem).removeClass(removeClass);
if(butTriggerBullClass){
$(butTrigger).removeClass(removeClass);
}
}
};
// Закроем блок
closeByDocument(target, 'button', 'div', 'act', true);
});
Все работает как надо. Но возникло желание как-то переписать или улучшить код, так как глянув после, понял, что как то смахивает на говнокод! Помогите советами или если можно, прям на моем примере показать свои идеи. Был бы очень признателен