Chr*_*ens 11 html javascript css jquery
我有一些看起来像这样的HTML:
<p>Some Text</p>
<div class="listBullet">Item 1</div>
<div class="listBullet">Item 2</div>
<div class="listBullet">Item 3</div>
<p>Some More Text</p>
<div class="listBullet">Item 1</div>
<div class="listBullet">Item 2</div>
<div class="listBullet">Item 3</div>
<p>Some Other Text</p>
Run Code Online (Sandbox Code Playgroud)
我想最终得到以下输出:
<p>Some Text</p>
<div class="wrapperDiv">
<div class="listBullet">Item 1</div>
<div class="listBullet">Item 2</div>
<div class="listBullet">Item 3</div>
</div>
<p>Some More Text</p>
<div class="wrapperDiv">
<div class="listBullet">Item 1</div>
<div class="listBullet">Item 2</div>
<div class="listBullet">Item 3</div>
</div>
<p>Some Other Text</p>
Run Code Online (Sandbox Code Playgroud)
我尝试过$(".listBullet").wrapAll("<div class='wrapperDiv' />"),但最终将两个块移动到彼此连续.看起来我需要的是一个选择器,它将连续的块分隔成单独的元素,然后我将单独调用wrapAll.
Ric*_*ock 14
这样做的工作:
$('p + .listBullet').each(function() {
$(this).nextUntil('p')
.addBack()
.wrapAll("<div class='wrapperDiv' />");
});
Run Code Online (Sandbox Code Playgroud)
container是父类的div):
$('.container > :not(.listBullet) + .listBullet').each(function() {
$(this).nextUntil('.container > :not(.listBullet)')
.addBack()
.wrapAll("<div class='wrapperDiv' />");
});
Run Code Online (Sandbox Code Playgroud)
var lb= [];
$('.container > *').each(function() {
if($(this).hasClass('listBullet')) {
lb.push(this);
}
else {
$(lb).wrapAll("<div class='wrapperDiv'/>");
lb= [];
}
});
$(lb).wrapAll("<div class='wrapperDiv'/>");
Run Code Online (Sandbox Code Playgroud)