javascript - 将生成的标签包装在分离的 div 上

标签 javascript jquery html css

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

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

我想要的是使用 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>

任何想法如何去做?如您所见,p 标签的数量各不相同,所以我不知道如何定位它。

最佳答案

可以用

尝试

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

演示:Fiddle


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

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

演示:Fiddle

关于javascript - 将生成的标签包装在分离的 div 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22012640/

相关文章:

html - 如何设置文本以水平填充 div?

Javascript 数据表插件

javascript - 如何从 Marionette.js ItemView 模板访问 Backbone.Model 方法?

javascript - 从嵌套对象数组中递归创建字符串?

javascript - 选择表单中的所有元素,除了父 div 包含显示 :none

javascript - 使用 Javascript 在逗号之间插入 CSS

html - 如何在将鼠标悬停在中央屏幕上时放大图片?

javascript - 从对象数组设置变量的最佳方法

javascript - $http 响应拦截器 header

jquery - 在 Laravel 4 中从 Jquery Ajax Json 检索值