jQuery,包装所有连续元素?

时间:2011-12-03 09:52:42

标签: jquery

使用jQuery,是否有一个包装所有连续元素的wrapAll版本?像这样:

<h2>bar</h2>
<h2>bar</h2>
<p>foo</p>
<p>foo</p>
<h2>bar</h2>
<p>foo</p>
<h2>bar</h2>

变成了这个:

<h2>bar</h2>
<h2>bar</h2>
<div>
    <p>foo</p>
    <p>foo</p>
    <h2>bar</h2>
    <p>foo</p>
</div>
<h2>bar</h2>

甚至更复杂,嵌套

<h2>bar</h2>
<h2>bar</h2>
<span>
    <p>foo</p>
    <p>foo</p>
</span>
<h2>bar</h2>
<p>foo</p>
<h2>bar</h2>
<span>
    <p>foo</p>
</span>
<h2>bar</h2>

变成了这个:

<h2>bar</h2>
<h2>bar</h2>
<div>
    <span>
       <p>foo</p>
       <p>foo</p>
    </span>
    <h2>bar</h2>
    <p>foo</p>
    <h2>bar</h2>
    <span>
        <p>foo</p>
    </span>
</div>
<h2>bar</h2>

何时运行?

$('p').wrapAll2('<div />')

1 个答案:

答案 0 :(得分:1)

据我所知,没有这样的功能,但你可以自己写。乍一看似乎并不太难。

你必须经历页面上的所有'p'(或任何你要包装的)元素,找到第一个,然后它是最后一个父母,然后是最后一个,它是最后一个父元素,然后获取所有元素,包括第一个和最后一个父母并将它们包装成所需的标签。