我有段落,这些段落没有排列或分组。
现在,我希望使用课程grouped
<p>Para 1</p>
<p>Para 2</p>
<div class="line"></div>
<p>Para 3</p>
<p>Para 4</p>
<p>Para 5</p>
<div class="grouped">
<p>Para 1</p>
<p>Para 2</p>
</div>
<div class="line"></div>
<div class="grouped">
<p>Para 3</p>
<p>Para 4</p>
<p>Para 5</p>
</div>
我知道wrapAll
功能可以帮助您,但它将所有p
分组到同一个元素grouped
中并且
我需要在不同的grouped
元素中
p
可能超出上述每个细分
答案 0 :(得分:2)
试试此演示this demo。迭代$(“p”)并将它们分组。
$("p").each(function(ix,el){
if($(el).next().is('.line')) - go to next group
else add to current
答案 1 :(得分:1)
迭代,检查元素是否已经被包装,如果不使用nextUntil来获取段落的集合并将它们包装
$('p').each(function() {
if ( ! $(this).closest('.grouped').length)
$(this).nextUntil('div').addBack().wrapAll("<div class='grouped' />");
});
答案 2 :(得分:0)
这将处理.line
代码
p
var last = $(".line").length;
var divGroup = '<div class="grouped"/>';
$(".line").each(function(i,e){
var segment1 = $(this).prevAll("p:not(.grouped)");
$(segment1.get().reverse()).wrapAll(divGroup);
if( i == last-1){
$(this).nextAll("p:not(.grouped)").wrapAll(divGroup);
}
});
JS Fiddle http://jsfiddle.net/6a87E/5/
答案 3 :(得分:0)
您还可以使用简单的while
循环:
var $p = $('p').parent();
while($p.children('p').length) {
$p.children('p:first')
.nextUntil('.line')
.addBack()
.wrapAll('<div class="grouped"/>');
}