Как ограничить максимальное количество одновременно активных элементов?

Как сделать, чтобы класс переключался, но не в случае, когда активных элементов больше 5 (не работает, если выбрать макс. возможное кол-во активных)?
https://codepen.io/anon/pen/YgEVjW
  • Вопрос задан
  • 102 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
const containerSelector = '.choose-buttons';
const buttonSelector = '.btn';
const activeClass = 'active';
const maxActive = 3;

$(containerSelector).on('click', buttonSelector, function(e) {
  const numActive = $(`${buttonSelector}.${activeClass}`, e.delegateTarget).length;
  const $this = $(this);

  if (numActive < maxActive || $this.hasClass(activeClass)) {
    $this.toggleClass(activeClass);
  }
});

// или

document.querySelectorAll(containerSelector).forEach(n => {
  n.addEventListener('click', onClick);
});

function onClick(e) {
  const button = e.target.closest(buttonSelector);
  if (button) {
    const active = [...this.querySelectorAll(`${buttonSelector}.${activeClass}`)];
    if (active.length < maxActive || active.includes(button)) {
      button.classList.toggle(activeClass);
    }
  }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
23 нояб. 2024, в 01:31
1000 руб./за проект
23 нояб. 2024, в 00:16
2000 руб./за проект