jquery:not(:first-child)wrapAll()每个div

时间:2015-09-27 14:57:24

标签: jquery wrapall

我想选择除了该类的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 个答案:

答案 0 :(得分:1)

使用wrap代替wrapAll

 $(".pt-cv-content-item :not(:first-child)").wrap( "<div class='new'></div>" );

wrap

  

描述:围绕匹配元素集中的每个元素包装HTML结构。

wrapall

  

描述:围绕匹配元素集中的所有元素包装HTML结构。

答案 1 :(得分:0)

包装整个内容,然后将第一个孩子从.new移到主div。

使用 String.getBytes(String charsetName) 来包装所有孩子。使用 wrapInner() 移动元素来启动元素。

$(".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>

答案 2 :(得分:0)

我选择了'.pt-cv-content-item'中的所有元素:

$(".pt-cv-content-item ").wrapInner( "<div class='new'></div>" );

我在'.pt-cv-content-item'div

中移出了第一个href
$(".new a:first-child").each(function() {
    $(this).parent().before(this);
});

谢谢你们