【发布时间】:2015-11-26 09:22:49
【问题描述】:
我需要将一些 HTML 元素包装到 div 中。
标记是这样的:
<div class="block">
<h2 class="block-title">Lorem</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus fringilla, lorem in congue lacinia, metus dolor mollis diam, eget maximus neque <span>tellus</span> non magna.</p>
<div class="message"><span class="message-title">Warning:</span>
<p>Lorem ipsum dolor sit amet, <span>consectetur adipiscing elit</span>. Phasellus fringilla, lorem in congue lacinia, metus dolor mollis diam, eget maximus neque tellus non <strong>magna</strong>.</p>
</div>
</div>
<div class="block">
<h2 class="block-title">Lorem 2 lorem</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<div class="note"><span class="note-title">Warning:</span>
<p>Lorem ipsum dolor sit amet, <span>consectetur adipiscing elit</span>. Phasellus fringilla, lorem in congue lacinia, metus dolor mollis diam, eget maximus neque tellus non <a href="#">magna</a>.</p>
</div>
</div>
我需要的最终结果是:
<div class="block">
<h2 class="block-title">Lorem</h2>
<div class="collapsed">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus fringilla, lorem in congue lacinia, metus dolor mollis diam, eget maximus neque <span>tellus</span> non magna.</p>
<div class="message"><span class="message-title">Warning:</span>
<p>Lorem ipsum dolor sit amet, <span>consectetur adipiscing elit</span>. Phasellus fringilla, lorem in congue lacinia, metus dolor mollis diam, eget maximus neque tellus non <strong>magna</strong>.</p>
</div>
</div>
</div>
<div class="block">
<h2 class="block-title">Lorem 2 lorem</h2>
<div class="collapsed">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<div class="note"><span class="note-title">Warning:</span>
<p>Lorem ipsum dolor sit amet, <span>consectetur adipiscing elit</span>. Phasellus fringilla, lorem in congue lacinia, metus dolor mollis diam, eget maximus neque tellus non <a href="#">magna</a>.</p>
</div>
</div>
</div>
所以基本上所有在 h2.block-title 里面和之后的东西都应该放在里面。
我现在的 JS
$('.block').each(function() {
$(this).find('p').wrapAll('<div class="collapsable"></div>');
});
但这仅适用于 p 标签。如何添加包含的 div?
【问题讨论】:
-
我会使用
$(this).children(':not(h2)').wrapAll('<div class="collapsable"></div>');或$(this).children(':not(:first-child)').wrapAll('<div class="collapsable"></div>');