如何用外部容器包装手风琴?

时间:2011-09-27 08:48:37

标签: javascript jquery accordion

手风琴我有以下问题。我有一对外部容器“accordion”的元素,但我需要用另一个容器包装每一对。据我所知,我之前无法包装它们,因为手风琴不起作用。

所以我需要在domready之后用一个额外的片段包装它们......

我明白了:

<div id="accordion">
    <h2 class="head">Headline</h2>
    <div class="content">Some content...</div>
    <h2 class="head">Headline</h2>
    <div class="content">Some content...</div>
 ....more pairs
</div>

我需要这个:

<div id="accordion">
<div class="outer">
    <h2 class="head">Headline</h2>
    <div class="content">Some content...</div>
</div>
<div class="outer">
    <h2 class="head">Headline</h2>
    <div class="content">Some content...</div>
</div>
...more pairs
</div>

我以为这会完成这项工作:

$('.head').before('<div class="outer">');
$('.content').after('</div>'); 

...但它会在每个标题之前插入已经关闭的div。

2 个答案:

答案 0 :(得分:5)

您只能使用before()after()等方法插入整个元素。

实现目标的一种方法是在每个<h2> / <div>对上拨打wrapAll(),使用类似nextUntil()的内容来匹配对:

$("#accordion h2").each(function() {
    $(this).nextUntil("h2").andSelf().wrapAll("<div class='outer'></div>");
});

答案 1 :(得分:0)

试试这个

  $('.head:first,.content:first').wrapAll('<div class="outer">');
  $('.head:last,.content:last').wrapAll('<div class="outer">');

JSFiddle Example