Показать сообщение отдельно
  #16 (permalink)  
Старый 22.10.2020, 06:46
Аспирант
Отправить личное сообщение для Aruta Посмотреть профиль Найти все сообщения от Aruta
 
Регистрация: 08.07.2019
Сообщений: 83

рони,
Сообщение от рони
const ul = document.querySelector('.results__filter-inner');
let tempLi;
document.addEventListener('click', event => {
    let filterUl = event.target.closest('ul');
    let li = event.target.closest('li');
    if (tempLi && li != tempLi) {
        tempLi.classList.remove('active-show');
        tempLi = null;
    }
    if (filterUl == ul) {

        if (li.querySelector('.filter__list')) {
            tempLi = li;
            let input = event.target.closest('[type="checkbox"]');
            if (input) li.querySelectorAll('[type="checkbox"]').forEach(el => el != input && (el.checked = false));
            if (event.target.closest('.filter__list')) tempLi.classList.toggle('active-show');
        }
        if (li.querySelector('.clear')) {
            ul.querySelectorAll(':checked').forEach(el => el.checked = false);
        }
    }
})
я в шоке от лаконичности кода
но он не работает у меня - ничего не происходит, а при нажатии на document вне фильтров иногда ошибка вылазит:
Cannot read property 'querySelector' of null.

Теперь интересно на сколько мой код мне сократить можно

Последний раз редактировалось Aruta, 22.10.2020 в 08:52.
Ответить с цитированием