alex-lenk
@alex-lenk
Разработчик сайтов

Как при клике на элемент переключить ему класс, а у других удалить?

При повторном клике не снимается активный класс .menu-catalog__open подскажите решение?

https://codepen.io/alex-lenk/pen/ZjPvGq

  1. При клике на дочерний элемент с классом .menu-catalog__link родителю этого элемента с классом .menu-catalog__item добавляется активный класс .menu-catalog__open

  2. При клике на другие дочерние элементы с классом .menu-catalog__link удаляется активный класс .menu-catalog__open у других родителей с классом .menu-catalog__item


var menuCatalogOpen = 'menu-catalog__open';

$('.menu-catalog__link').on('click', function() {
  $('.menu-catalog__item').removeClass(menuCatalogOpen);
  $(this).parent().toggleClass(menuCatalogOpen);
});

Не удаляется класс .menu-catalog__open при повторном клике!
  • Вопрос задан
  • 255 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
const itemSelector = '.menu-catalog__item';
const buttonSelector = '.menu-catalog__link';
const className = 'menu-catalog__open';

const $items = $(itemSelector).on('click', buttonSelector, e => {
  $items.not(e.delegateTarget).removeClass(className);
  $(e.delegateTarget).toggleClass(className);
});

// или

const items = document.querySelectorAll(itemSelector);
const onClick = ({ target: t }) =>
  t.closest(buttonSelector) && items.forEach(n => {
    n.classList[n.contains(t) ? 'toggle' : 'remove'](className);
  });

items.forEach(n => n.addEventListener('click', onClick));
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы