Morpheus_God
@Morpheus_God

Как убрать класс если он уже есть и добавить его на div по которому произошел клик?

Доброй ночи.
Придумал себе задачу реализацию которой увидел на одном из сайтов доставки пиццы.
Под каждым товаром есть выбор толщины теста и размера самой пиццы. Реализовано так, что при клике на толщину теста вешается класс .checked и при этом убирается с другого элемента если он там есть.
У меня же получается только добавлять класс и при повторном клике на тот же элемент убирать его.
Прикладываю свои попытки реализации.
  • Вопрос задан
  • 155 просмотров
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
const containerSelector = '.card_options > div';
const itemSelector = '.option';
const activeClass = 'checked';
const toggleItem = item => item
  ?.closest(containerSelector)
  .querySelectorAll(itemSelector)
  .forEach(n => n.classList[n === item ? 'toggle' : 'remove'](activeClass));


// можно добавить обработчик клика каждому элементу индивидуально
document.querySelectorAll(itemSelector).forEach(function(n) {
  n.addEventListener('click', this);
}, e => toggleItem(e.currentTarget));

// а можно один раз - делегированный, всей странице
document.addEventListener('click', e => {
  toggleItem(e.target.closest(itemSelector));
});
Ответ написан
dimovich85
@dimovich85 Куратор тега JavaScript
https://u-academy.net/
Да е-ма-е, прям на первой странице, три на выбор: вариантов
Вообще, есть button для таких вещей, по которым кликают.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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