@bazliiii

Как добавлять класс к активной radio кнопке?

Как добавить класс для выбранной radio кнопки?

<div class="faq__items">
<div class="faq__item">
            <label class="faq__question" for="faq_1">
                <div class="faq__question--top">
                    <label class="faq__title" for="faq_1">text
                    </label>
                    <img src="./arrow.svg" alt="arrow" class="faq__arrow">
                </div>
                <input class="faq__input" type="radio" name="faq" id="faq_1">
                <div class="faq__content">
                    <p class="faq__text">
                        text
                    </p>
                </div>
            </label>
        </div>
<div class="faq__item">
            <label class="faq__question" for="faq_2">
                <div class="faq__question--top">
                    <label class="faq__title" for="faq_2">text
                    </label>
                    <img src="./arrow.svg" alt="arrow" class="faq__arrow">
                </div>
                <input class="faq__input" type="radio" name="faq" id="faq_2">
                <div class="faq__content">
                    <p class="faq__text">
                        text
                    </p>
                </div>
            </label>
        </div>
</div>

Вот к примеру мы выбрали item, и нужно, чтобы у выбранной radio к элементу .faq__question--top добавлялся active.
  • Вопрос задан
  • 107 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
const items = document.querySelectorAll('.faq__item');

items.forEach(n => n.addEventListener('change', onChange));

function onChange(e) {
  items.forEach(n => n
    .querySelector('.faq__question--top')
    .classList
    .toggle('active', e.currentTarget === n)
  );
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
HardBot
@HardBot
back-end, front-end developer
document.querySelectorAll('.faq__item').forEach(item => { 
   item.addEventListener('click', event => { 
      // Если есть класс active - удалить, нету - добавить 
      item.querySelector('.faq__question--top').classList.toggle('active') 
   }) 
})
Ответ написан
delphinpro
@delphinpro Куратор тега JavaScript
frontend developer
.faq__question--top:has(input:checked) {
  /* нужные стили */
}


К сожалению не работает по умолчанию в FireFox. Но скоро уже можно будет юзать вовсю.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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