Задать вопрос

Как добавить класс одному элементу и убрать его у остальных?

<ul class="side__nav" id="side__nav">
              <li class="home__item" id="item1">Home</li>
              <li class="works__item" id="item2">Works</li>
              <li class="about__item" id="item3">About</li>
              <li class="contact__item" id="item4">Contact</li>
              <li class="hire__item" id="item5">Hire us</li>
            </ul>


Мне нужно, чтобы при нажатии на какой-то из элементов к нему добавлялся класс is-active, а у остальных он удалялся.
  • Вопрос задан
  • 1121 просмотр
Подписаться 1 Средний 1 комментарий
Решения вопроса 2
Aldadis
@Aldadis
Попробуйте так
$('#side__nav li').click(function() {
        $(this).addClass('is-active').siblings().removeClass('is-active');
    });
Ответ написан
Комментировать
0xD34F
@0xD34F Куратор тега JavaScript
Где элементы находятся, что за элементы, какой класс надо им переключать:

const container = document.querySelector('.side__nav');
const itemSelector = 'li';
const activeClass = 'is-active';

Переключаем:

container.addEventListener('click', function(e) {
  const item = e.target.closest(itemSelector);
  if (item) {
    this.querySelector(`${itemSelector}.${activeClass}`)?.classList.remove(activeClass);
    item.classList.add(activeClass);
  }
});

или

const items = container.querySelectorAll(itemSelector);
const onClick = e => items.forEach(n => n.classList.toggle(activeClass, n === e.currentTarget));
items.forEach(n => n.addEventListener('click', onClick));
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы