在分隔的div上包装生成的标签

cod*_*dek 2 html javascript css jquery

我生成了这个标记,我无法修改它:

<h2>Title</h2>
<p>text</p>
<p>text</p>
<p>text</p>
<h3>Title</h3>
<p>text</p>
<p>text</p>
<p>text</p>
    <p>text</p>
    <p>text</p>
<h3>Title</h3>
<p>text</p>
<p>text</p>
Run Code Online (Sandbox Code Playgroud)

我想要的是使用jQuery包装它:

<div class="article">
    <h2>Title</h2>
    <p>text</p>
    <p>text</p>
    <p>text</p>
</div>
<div class="article">
    <h3>Title</h3>
    <p>text</p>
    <p>text</p>
    <p>text</p>
    <p>text</p>
    <p>text</p>
</div>
<div class="article">
    <h3>Title</h3>
    <p>text</p>
    <p>text</p>
</div>
Run Code Online (Sandbox Code Playgroud)

任何想法怎么做?正如您所看到的p标签数量不同所以我不知道如何定位.

Aru*_*hny 7

使用可以使用

尝试

$(':header').each(function(){
    $(this).nextUntil(':header').addBack().wrapAll('<div class="article" />')
})
Run Code Online (Sandbox Code Playgroud)

演示:小提琴


性能稍好的版本可以(因为它可以使用css选择器)

$('h2, h3').each(function () {
    $(this).nextUntil('h2, h3').addBack().wrapAll('<div class="article" />')
})
Run Code Online (Sandbox Code Playgroud)

演示:小提琴