@Dimtri

Как при клике на li передать его добавочный класс родительскому диву?

Есть такая разметка
<div class="selectboxss">
  <div class="selectboxssvalue">
    <div class="selectboxssvalue-inner">
      Верхняя строчка
    </div>
  </div>
  <div class="selectboxssmenu-wrap" style="display: none;">
    <ul class="selectboxssmenu">
      <li class="selectoption act selectoption-1">
        1 пункт
      </li>
      <li class="selectoption  selectoption-2">
       2 пункт
      </li>
      <li class="selectoption  selectoption-3">
        3 пункт
      </li>
    </ul>
  </div>
</div>

Как при клике на li.selectoption взять его добавочный класс selectoption-1 или selectoption-2 или сколько угодно, в зависимости от кол-ва , и передать обертке с классом selectboxss? И, соответственно, удалять и добавлять классы у родителя при клике на другие .

PS. Скрипт, который допиливаю, написан на Jquery. Просто тега такого не нашлось.
  • Вопрос задан
  • 126 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
const classContainer = 'selectboxss';
const classOption = 'selectoption';
const getClasses = el => [...el.classList].filter(n => n !== classOption);
//const getClass = el => el.className.match(RegExp(`${classOption}-\\d+`))[0];

document.addEventListener('click', ({ target: t }) => {
  if (t.classList.contains(classOption)) {
    const container = t.closest(`.${classContainer}`);
    const { classList } = container;
    classList.remove(...[...container.querySelectorAll(`.${classOption}`)].flatMap(getClasses));
    classList.add(...getClasses(t));
    //classList.remove(...Array.from(container.querySelectorAll(`.${classOption}`), getClass));
    //classList.add(getClass(t));
  }
});
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
gogowq
@gogowq
Ozh domosh acha ozh
const selectboxss = document.querySelector('.selectboxss');
const liElements = document.querySelectorAll('.selectboxssmenu li');
liElements.forEach(li => {
  li.addEventListener('click', () => {
    const additionalClass = li.classList[1];
    selectboxss.classList.remove(...selectboxss.classList);
    selectboxss.classList.add(additionalClass);
  });
});
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
16 мая 2024, в 23:36
200000 руб./за проект
16 мая 2024, в 23:10
12000 руб./за проект