0

我想选择除该类的 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。先感谢您

4

3 回答 3

1

使用wrap而不是wrapAll.

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

描述:在匹配元素集中的每个元素周围包裹一个 HTML 结构。

包装

描述:围​​绕匹配元素集中的所有元素包裹一个 HTML 结构。

于 2015-09-27T14:59:25.283 回答
0

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

用来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>

于 2015-09-27T15:06:40.843 回答
0

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

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

我移出了 '.pt-cv-content-item' div 中的第一个 a href

$(".new a:first-child").each(function() {
    $(this).parent().before(this);
});

感谢你们

于 2015-09-27T17:53:42.923 回答