Как сделать, чтобы не убирался активный класс?
const servicesList = document.querySelector('.services__сategory');
const activeClass = "active-category";
servicesList.addEventListener("click", function(event) {
const element = event.target.closest(".category-item");
if (!element) return;
const activeElement = element.parentElement.querySelector(".active-category");
activeElement && activeElement.classList.remove(activeClass);
(element === activeElement) || element.classList.add(activeClass);
});
Как сделать, чтобы при клике на уже активный элемент класс .active-category не убирался?
Ответы (2 шт):
Автор решения: Aziz Umarov
→ Ссылка
Конечно это работает но думаю как-то так
const servicesList = document.querySelector('.services__сategory');
const activeClass = "active-category";
servicesList.addEventListener("click", function(event) {
const element = event.target.closest(".category-item");
if (!element) return;
const activeElement = element.parentElement.querySelector(".active-category");
//activeElement && activeElement.classList.remove(activeClass);
(element === activeElement) || element.classList.add(activeClass);
});
Единственно у вас назначается element.classList.add(activeClass) как там по логике разбирайтесь сами
Автор решения: Grundy
→ Ссылка
В данном случае лишним является условие:
(element === activeElement)
Если оно истинно, выражение после || не выполняется, следовательно и класс не добавляется заново.
Для решения достаточно его просто убрать.
Так же стоит использовать if для выбора действия, чтобы не путаться в последствии.
В итоге код может выглядеть так:
const servicesList = document.querySelector('.services__сategory');
const activeClass = "active-category";
servicesList.addEventListener("click", function(event) {
const element = event.target.closest(".category-item");
if (!element) return;
const activeElement = element.parentElement.querySelector(".active-category");
activeElement?.classList?.remove(activeClass);
element.classList.add(activeClass);
});