jQuery如何将div包含在同一个类元素的多个中

Nat*_*tte 7 html javascript jquery

我试图将多个相同的类div包装成div并跳过不具有相同类的div..wrap不会将它们组合在一起,而.wrapAll会抛出下面的非类别div.我一直在尝试创建一个替代解决方案,但无济于事.

原版的

<div class="entry">Content</div>
<div class="entry">Content</div>
<div class="entry">Content</div>
<div>Skip in wrap</div>
<div class="entry">Content</div>
<div class="entry">Content</div>
<div class="entry">Content</div>

    continued...
Run Code Online (Sandbox Code Playgroud)

想要的结果

<div>
    <div class="entry">Content</div>
    <div class="entry">Content</div>
    <div class="entry">Content</div>
</div>
<div>Skip in wrap</div>
<div>
    <div class="entry">Content</div>
    <div class="entry">Content</div>
    <div class="entry">Content</div>
</div>
Run Code Online (Sandbox Code Playgroud)

Nic*_*ver 8

您可以使用循环快速循环遍历<div>元素for.在下面的代码中,只需更改初始选择器以获取所有兄弟姐妹div,例如#content > div.entry或者无论他们在哪里:

var divs = $("div.entry");
for(var i=0; i<divs.length;) {
  i += divs.eq(i).nextUntil(':not(.entry)').andSelf().wrapAll('<div />').length;
}?
Run Code Online (Sandbox Code Playgroud)

你可以在这里尝试一下.我们只是循环,.entry <div>元素.nextUntil()用于获取所有.entry元素,直到有一个非.entry使用:not()选择器.然后我们将接下来的元素,加上我们开始的那个元素(.andSelf())并.wrapAll()在该组上做一个.在它们被包裹之后,我们正在向前跳过循环中的许多元素.