包装多个元素的最佳方法是什么。我尝试了几种方法但没有成功。
这是标记:
<div>
<h3>Civil aerospace </h3>
<p>Powering more than 30 civil aircraft types from small executive jets to the lartest airliners.</p>
<h4>£47.1bn</h4>
<p>Order book</p>
<h4>£4,481m</h4>
<p>Revenue</p>
</div>
这是我最终需要的:
<div class="hub">
<h3>Civil aerospace </h3>
<p>Powering more than 30 civil aircraft types from small executive jets to the lartest airliners.</p>
<div class="wrap">
<h4>£47.1bn</h4>
<p>Order book</p>
</div>
<div class="wrap">
<h4>£4,481m</h4>
<p>Revenue</p>
</div>
</div>
尝试过添加,查找,过滤等
我是否需要设置迭代?
答案 0 :(得分:1)
您可以使用新的nextUntil()方法执行此操作:
$(function(){
$("h4").each(function(){
$(this).add($(this).nextUntil("h4")).wrap("<div class='wrap' />");
});
});
nextUntil方法是jQuery 1.4中的新方法。
答案 1 :(得分:1)
抱歉,不得不掏出一个煎炸的东西:)
Scharrels说得对,但这也是jQuery 1.3.2的可能解决方案:
$(function(){
$('div').addClass('hub').find('h4').wrap('<div class="wrap"></div>');
$('.wrap').each(function(){
var div = $(this);
div.append(div.next('p').remove());
while(div.next('p').length != 0)
div.append(div.next('p').remove());
});
});
它有点繁琐,但它有效,并且它确实满足每个<p>
后有多个<h4>
标记。