jquery:not(:first-child) wrapAll() каждый div
Я хочу выбрать все элементы, кроме первого в div с этим классом.
Текущий HTML:
<div class="cpt-cv-content-item">
<a>...</a>
<h4>...</h4>
...
</div>
<div class="cpt-cv-content-item">
<a>...</a>
<h4>...</h4>
...
</div>
Я пытался использовать Wrap All:
$(".pt-cv-content-item :not(:first-child)").wrapAll( "<div class='new'></div>" );
Эта функция правильно выбирает все элементы, кроме первого, но перемещает их все в первый div.
Я хочу получить вот так:
<div class="cpt-cv-content-item">
<a>...</a>
<div class='new'>
<h4>...</h4>
...
</div>
</div>
<div class="cpt-cv-content-item">
<a>...</a>
<div class='new'>
<h4>...</h4>
...
</div>
</div>
К сожалению, я не могу редактировать HTML. заранее спасибо
3 ответа
Оберните весь контент, затем переместите первого ребенка из .new
на главную див.
использование wrapInner()
обернуть всех детей. использование prependTo()
переместить элемент в начало элемента.
$(".cpt-cv-content-item").wrapInner($("<div class='new'>"));
$('div.new').each(function(){
$(this).children().first().prependTo($(this).closest(".cpt-cv-content-item"));
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div class="cpt-cv-content-item">
<a>...</a>
<h4>...</h4>
...
</div>
<div class="cpt-cv-content-item">
<a>...</a>
<h4>...</h4>
...
</div>
Использование wrap
вместо wrapAll
,
$(".pt-cv-content-item :not(:first-child)").wrap( "<div class='new'></div>" );
Описание: обернуть структуру HTML вокруг каждого элемента в наборе соответствующих элементов.
Описание: обернуть структуру HTML вокруг всех элементов в наборе соответствующих элементов.
Я выбрал все элементы в ".pt-cv-content-item":
$(".pt-cv-content-item ").wrapInner( "<div class='new'></div>" );
Я переместил первый href в '.pt-cv-content-item' div
$(".new a:first-child").each(function() {
$(this).parent().before(this);
});
Спасибо вам, ребята