@kamisarlapsha

Как добавить общие обёртки элементам с одним классом, которые находятся между элементами с другим классом?

Нужно обернуть эти дивы

<div class="tires-filter--group-block bf-attr-block"></div>

в ещё один div. И чтобы они оборачивались после каждого

<div class="bf-attr-group-header tires-filter--group-header"></div>

и до следующего такого элемента.

Вот код, который сейчас:

<div class="bf-attr-group-header tires-filter--group-header"></div>
<div class="tires-filter--group-block bf-attr-block"></div>
<div class="bf-attr-group-header tires-filter--group-header"></div>
<div class="tires-filter--group-block bf-attr-block"></div>
<div class="tires-filter--group-block bf-attr-block"></div>
<div class="bf-attr-group-header tires-filter--group-header"></div>
<div class="tires-filter--group-block bf-attr-block"></div>
<div class="tires-filter--group-block bf-attr-block"></div>
<div class="tires-filter--group-block bf-attr-block"></div>

Вот код, который должен получиться:

<div class="bf-attr-group-header tires-filter--group-header"></div>
<div class="obernyl">
  <div class="tires-filter--group-block bf-attr-block"></div>
</div>
<div class="bf-attr-group-header tires-filter--group-header"></div>
<div class="obernyl">
  <div class="tires-filter--group-block bf-attr-block"></div>
  <div class="tires-filter--group-block bf-attr-block"></div>
</div>
<div class="bf-attr-group-header tires-filter--group-header"></div>
<div class="obernyl">
  <div class="tires-filter--group-block bf-attr-block"></div>
  <div class="tires-filter--group-block bf-attr-block"></div>
  <div class="tires-filter--group-block bf-attr-block"></div>
</div>
  • Вопрос задан
  • 174 просмотра
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
const $headers = $('.bf-attr-group-header');
$headers.each(i => $headers
  .eq(i)
  .nextUntil($headers.get(i + 1))
  .wrapAll('<div class="wrapper">')
);

или

document.querySelectorAll('.bf-attr-group-header').forEach((n, i, a) => {
  const wrapper = document.createElement('div');
  const elems = [];
  for (let el = n; (el = el.nextElementSibling) && el !== a[i + 1]; elems.push(el)) ;
  wrapper.append(...elems);
  wrapper.classList.add('wrapper');
  n.after(wrapper);
});
Ответ написан
Комментировать
@GreatRash
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Stalker_RED
@Stalker_RED
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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