Как передать data-attribute кнопки, сделав его классом для блока?

Есть код - Fiddle
Пытаюсь передать по клику на кнопку ее data-attribute, как класс для блока.

Кликнув на button data-class="class-1" - всем блокам добавляется данный класс
Кликнув на button data-class="class-2" - всем блокам добавляется данный класс, но удаляется предыдущий
и т.д.
И как правильно это реализовать?
  • Вопрос задан
  • 253 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
const blockSelector = '.block';
const buttonSelector = '[data-class]';
const activeClass = 'active';

const blocks = document.querySelectorAll(blockSelector);
const buttons = [...document.querySelectorAll(buttonSelector)];
const classes = buttons.map(n => n.dataset.class);

document.body.addEventListener('click', e => {
  const button = e.target.closest(buttonSelector);
  if (button) {
    blocks.forEach(n => {
      n.classList.remove(...classes);
      n.classList.add(button.dataset.class);
    });

    buttons.forEach(n => n.classList.toggle(activeClass, n === button));
  }
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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