Как обернуть все элементы внутри div после определенного элемента? (На jQuery)
у меня есть тег article элементов внутри него.
: как я могу обернуть все элементы внутри div-элемент после определенного элемента?
это текущий код:
<article>
<figure class="thumbnail">
<img src="src_to_img" />
</figure>
<h2>Name: Test Name</h2>
<div class="description"></div>
<div class="content"></div>
<div class="content"></div>
<div class="more"></div>
<article>
на выход должно быть:
<article>
<figure class="thumbnail">
<img src="src_to_img" />
</figure>
<div class="description-wrap">
<h2>Name: Test Name</h2>
<div class="description"></div>
<div class="content"></div>
<div class="content"></div>
<div class="more"></div>
</div>
<article>
Как видите.. конечный результат имеет все элементы, обернутые внутри class="description-wrap"
после <figure></figure>
1 ответов
как предложил @squint, jQuery имеет wrapAll метод, который может сделать это, если в сочетании с далее-братья и сестры-селектор ~
$("article > figure ~ *").wrapAll("<div class='description-wrap'></div>")
однако это не дает вам желаемого результата, когда у вас есть несколько статей. Вместо этого нам нужно использовать .each()
вот так:
$("article > figure").each(function(){
$(this).siblings().wrapAll("<div class='description-wrap'></div>")
});
.description-wrap {border:1px dotted red;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<article>
<figure class="thumbnail">
<img src="src_to_img" />
</figure>
<h2>Name: Test Name</h2>
<div class="description"></div>
<div class="content"></div>
<div class="content"></div>
<div class="more"></div>
</article>
<article>
<figure class="thumbnail">
<img src="src_to_img" />
</figure>
<h2>Name: Test Name</h2>
<div class="description"></div>
<div class="content"></div>
<div class="content"></div>
<div class="more"></div>
</article>