2012-10-09 159 views
3

我想选择两个给定元素之间的所有元素。我有HTML这样的...如何选择两个元素之间的所有元素

<h2>This is firsty</h2> 
<p>Some para</p> 
<ul> 
    <li>list items</li> 
    <li>list items</li> 
    <li>list items</li> 
    <li>list items</li> 
    <li>list items</li> 
</ul> 
<h2>Secondy</h2> 
<p>More text</p> 

我想从第一h2到第二h2选择一切,这样我就可以把它包装在div,在自己的包装所有部分结束了。

回答

5

我建议:

var elems = $('h2:first').nextUntil('h2'); 

或者,执行实际包装:

$('h2:first').nextUntil('h2').wrapAll('<div />'); 

更一般:

$('h2').each(
    function(i,e) { 
     $(this) 
      .nextUntil(this.tagName) 
      .wrapAll('<div />'); 
    });​ 

JS Fiddle demo

为了包括起动元件简单地使用andSelf()作为选择器链的一部分:

$('h2:first').nextUntil('h2').andSelf().wrapAll('<div />'); 

JS Fiddle demo

参考文献:

+0

这很棒。在包装之前,有没有什么办法在节中包含'h2'? –

+0

实际上得到它:'$ el = $(“h2”)。eq(0); $ el.nextUntil(“h2”)。add($ el)' –

+0

是的,这也可以。 =) –

相关问题