jquery - 使用jquery将一系列元素包装在两个h2标签之间

标签 jquery

我目前有一个动态创建的页面,如下所示:

<h2>a Heading</h2>
<p>a paragraph</p> 
<p>a paragraph</p>  
<p>a paragraph</p>  
<p>a paragraph</p>  
<p>a paragraph</p>  
<h2>a Heading</h2>  
<p>a paragraph</p>  
<p>a paragraph</p>  
<p>a paragraph</p>  
<p>a paragraph</p>  
<p>a paragraph</p>  

我想做的是使用 jQuery 来包装 h2p 标签,直到下一个 h2 标签:例如:

<div class="headingName">
<h2>a Heading</h2>  
<p>a paragraph</p> 
<p>a paragraph</p>  
<p>a paragraph</p>  
<p>a paragraph</p>  
<p>a paragraph</p>
</div>
<div class="headingName">
<h2>a Heading</h2>  
<p>a paragraph</p>  
<p>a paragraph</p>  
<p>a paragraph</p>  
<p>a paragraph</p>  
<p>a paragraph</p>  
</div>

到目前为止,我未能成功管理此问题,但已经使用此处用户的代码接近了(找不到原始文章的链接):

$('.report-content h2').each(function(){
    var $set = $();
    var nxt = this.nextSibling;
    while(nxt) {
        if(!$(nxt).is('.report-content h2')) {
            $set.push(nxt);
            nxt = nxt.nextSibling;
        } else break;
    } 
   $set.wrapAll('<div class="content" />');
});

我得到的是 div 仅包裹在 p 标签周围,但需要包含关联的 h2 标签,通常是上面的标签p 标签。

最佳答案

获取每个 h2,获取所有 sibling ,直到获得另一个 h2(或者此级别没有元素),然后重新包含 h2 在集合中。 Here's the JSFiddle.

$('.report-content h2').each(function(){ 
    $(this)
        .nextUntil("h2")
        .addBack()
        .wrapAll('<div class="content" />');
});

jQuery 文档

关于jquery - 使用jquery将一系列元素包装在两个h2标签之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7968303/

相关文章:

Jquery 单击事件 - 需要两次单击才能触发

javascript - 带有索引,键和值的 map 上的每个jquery

javascript - 尝试在 Chrome 中使用 jQuery 同步 AJAX + .ready() 时出现不可预测的行为

jquery - 将 qTip2 方向设置为从右到左 (RTL)

jquery - jQuery构造函数有什么用?另外,我对DOM树感到困惑。而且,看起来我不知道jQuery对象是什么

javascript - AnythingSlider 具有动态高度?

javascript - 在自定义授权期间强制 ajax .fail() 来管理登录重定向

javascript - 如何用我要编辑的html表中行的数据填充表单中的输入字段

javascript - 如何实时检查是否选择了第一个下拉列表

jQuery 文件上传 - 从对话框窗口获取 "Open"事件