0

如果您有以下代码:

<div class="parent">

    <div class="1"></div>
    <div class="2"></div>
    <div class="3"></div>
    <div class="4"></div>
    <div class="5"></div>   

</div>

如何用类 2、3、4、5 围绕 div 包裹一个新的 div,所以它看起来像这样:

<div class="parent">

    <div class="1"></div>

    <div class="sub">
        <div class="2"></div>
        <div class="3"></div>
        <div class="4"></div>
        <div class="5"></div> 
    </div> 

</div>

父级上的 wrapAll 会用新的 div 包装所有内容,有没有办法让它忽略第一个 div?

4

3 回答 3

7

用于gt(0)选择除第一个 div(直接后代)和 wrapAll 之外的所有内容。这将选择 div 下存在的所有索引大于 0 的.parentdiv。

$('.parent > div:gt(0)').wrapAll('<div class="sub">');

小提琴

:gt()

输出:

<div class="parent">

    <div class="1">1</div>
    <div class="sub">
            <div class="2">2</div>
            <div class="3">3</div>
            <div class="4">4</div>
            <div class="5">5</div>
    </div>
</div>
于 2013-07-01T21:31:33.767 回答
4

使用not()过滤器:not()选择器

$('.parent div').not('.1').wrapAll('<div class="sub">');

或者:

$('.parent div:not(.1)').wrapAll('<div class="sub">');

如果您总是想忽略第一个元素,也可以使用div:first-child代替。.1

于 2013-07-01T21:36:59.673 回答
1

如果您想要排除的元素不一定是第一个,您可以使用:

$(".parent div").not("div.1").wrapAll("<div class='sub'>");

虽然,这将重新排序您div的 s 以便包装首先出现,并且未包装的元素最后出现。当它是第一个元素时不是问题,但如果它是第三个元素,例如,输出将是:

<div class='sub'>
    <div class="1"></div>
    <div class="2"></div>
    <div class="4"></div>
    <div class="5"></div>
</div>
    <div class="3"></div>

示例:http: //jsfiddle.net/tomtheman5/3TL4M/

编辑:刚刚看到@Corion 的回答......这基本上是一样的,但有更多信息。我会留下它。

于 2013-07-01T21:41:19.437 回答