【问题标题】:Is there a way to wrapAll() but ignore one element?有没有办法 wrapAll() 但忽略一个元素?
【发布时间】:2026-01-01 11:00:01
【问题描述】:

如果你有以下代码:

<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?

【问题讨论】:

    标签: javascript jquery jquery-selectors


    【解决方案1】:

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

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

    Fiddle

    :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>
    

    【讨论】:

    • 不是吗,忽略直到第一个?
    • @MohammadAreebSiddiqui 它会忽略第一个,即索引为 0 的那个。
    • @MohammadAreebSiddiqui 这是说,Divs with greater than a 0 index need to be wrapped with a div class of sub
    • @user2413333 你关心班级吗?你只是想忽略第一个对吗?我相信你的代码中没有 .1 类。
    • @PSL 不!如果我将索引更改为 1 它会忽略 1 and 2
    【解决方案2】:

    使用not() filter:not() selector

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

    或者:

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

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

    【讨论】:

    • 是的。感觉您的解决方案做出了不应该的假设,但后来改变了我的想法。对于那个很抱歉。编辑:哇,得到了一个徽章。
    • 没问题,但评论总是有帮助的:)。我假设 OP 只是想忽略第一个,因此在示例代码中他将类命名为 1, 2, 3 , 4etc...
    【解决方案3】:

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

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

    尽管如此,这将重新排序您的divs,以便包装首先出现,而未包装的元素最后出现。当它是第一个元素时不是问题,但如果它是第三个元素,例如,输出将是:

    <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/

    edit:刚刚看到@Corion 的回答...这本质上是相同的,但有更多信息。我先不说了。

    【讨论】:

      最近更新 更多