I want to select all elements between two given elements. I have html like this...
<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>
I want to select everything from the first h2
to the second h2
, so I can wrap it in a div
, ending up with all sections in their own wrapper.
I'd suggest:
var elems = $('h2:first').nextUntil('h2');
Or, to perform the actual wrapping:
$('h2:first').nextUntil('h2').wrapAll('<div />');
More generically:
$('h2').each(
function(i,e) {
$(this)
.nextUntil(this.tagName)
.wrapAll('<div />');
});
JS Fiddle demo.
In order to include the starting element simply use andSelf()
as part of the selector chain:
$('h2:first').nextUntil('h2').andSelf().wrapAll('<div />');
JS Fiddle demo.
References:
andSelf()
.nextUntil()
.wrapAll()
.If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With