@damarkuzz

Как задать класс по клику на input тому блоку, кастомный атрибут которого совпадает с id input'a?

Как задать класс по клику на input тому блоку, кастомный атрибут которого совпадает с id input'a?
  • Вопрос задан
  • 63 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
const buttonSelector = 'input[name="group"]';
const contentSelector = '.click';
const activeClass = 'show';


// делегирование, обработчик события добавляем один раз, на документ;
// соответствие между радиокнопками и блоками устанавливаем через равенство атрибутов
document.addEventListener('change', ({ target: t }) => {
  if (t.matches(buttonSelector)) {
    document.querySelectorAll(contentSelector).forEach(n => {
      n.classList.toggle(activeClass, n.dataset.click === t.id);
    });
  }
});

// или, назначаем обработчик события каждой кнопке индивидуально;
// соответствие между радиокнопками и блоками устанавливаем через равенство индексов
const buttons = document.querySelectorAll(buttonSelector);
const contents = document.querySelectorAll(contentSelector);

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

function onChange() {
  const index = Array.prototype.indexOf.call(buttons, this);
  contents.forEach((n, i) => n.classList.toggle(activeClass, i === index));
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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