Как правильно обернуть дивом несколько элементов?
Имею:
<div id="2" class="slider">
<div class="wow-ggg"></div>
<div class="wow-ggg"></div>
<div class="wow-ggg"></div>
<div class="wow-ggg"></div>
<div class="wow-ggg"></div>
<div class="wow-ggg"></div>
<div class="wow-ggg"></div>
<div class="wow-ggg"></div>
<div class="wow-ggg"></div>
<div class="wow-ggg"></div>
</div>
Таких более сотни. Я оборачиваю в свой див разными группами в разных количествах.
const items = [...document.querySelectorAll('.wow-ggg')];
const div1 = document.createElement('div');
div1.classList.add('test');
document.body.append(div1); // вставляем див, куда нужно
div1.append(...items.slice(0, 5));
const div2 = document.createElement('div');
div2.classList.add('test');
document.body.append(div2); // вставляем див, куда нужно
div2.append(...items.slice(5, 10));
..... и так далее
это работает НО мне нужно чтобы это все оставалось в пределах моего id="2" class="slider"
<div id="2" class="slider">
..... чтобы это все здесь и оставалось и непермещалось никуда
</div>
Ответы (2 шт):
Автор решения: Алексей Шиманский
→ Ссылка
const items = [...document.querySelectorAll('.wow-ggg')];
let slider = document.querySelector('.slider');
const div1 = document.createElement('div');
div1.append(...items.slice(0, 5));
const div2 = document.createElement('div');
div2.append(...items.slice(5, 10));
slider.innerHTML = '';
slider.append(div1); // вставляем див, куда нужно
slider.append(div2); // вставляем див, куда нужно
.slider {
border: 1px solid blue;
padding: 5px;
}
.slider > div {
border: 1px solid red;
margin: 2px;
}
.wow-ggg {
width: 20px;
height: 20px;
border: 1px solid black;
margin: 2px;
}
<div id="2" class="slider">
<div class="wow-ggg"></div>
<div class="wow-ggg"></div>
<div class="wow-ggg"></div>
<div class="wow-ggg"></div>
<div class="wow-ggg"></div>
<div class="wow-ggg"></div>
<div class="wow-ggg"></div>
<div class="wow-ggg"></div>
<div class="wow-ggg"></div>
<div class="wow-ggg"></div>
</div>
Автор решения: teran
→ Ссылка
Раз уж тут присутствует метка jquery, то для оборачивания элементов есть метод wrapAll().
let items = $("#2 .wow-ggg");
items.slice(0,5).wrapAll('<div class="red">');
items.slice(5,8).wrapAll('<div class="green">');
.red { color: red; }
.green { color: green; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="2" class="slider">
<div class="wow-ggg">1</div>
<div class="wow-ggg">2</div>
<div class="wow-ggg">3</div>
<div class="wow-ggg">4</div>
<div class="wow-ggg">5</div>
<div class="wow-ggg">6</div>
<div class="wow-ggg">7</div>
<div class="wow-ggg">8</div>
<div class="wow-ggg">9</div>
<div class="wow-ggg">10</div>
</div>