I want to select all elements between two given elements. I have html like this...
我要在两个给定的元素之间选择所有的元素。我有这样的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>
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.
我想要选择从第一个h2到第二个h2的所有内容,所以我可以用div包装它,最后所有的部分都在它们自己的包装中。
1 个解决方案
#1
6
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小提琴演示。
In order to include the starting element simply use andSelf()
as part of the selector chain:
为了包含起始元素,只需使用andSelf()作为选择器链的一部分:
$('h2:first').nextUntil('h2').andSelf().wrapAll('<div />');
JS小提琴演示。
References:
引用:
-
andSelf()
. - andSelf()。
-
nextUntil()
. - nextUntil()。
-
wrapAll()
. - wrapAll()。
#1
6
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小提琴演示。
In order to include the starting element simply use andSelf()
as part of the selector chain:
为了包含起始元素,只需使用andSelf()作为选择器链的一部分:
$('h2:first').nextUntil('h2').andSelf().wrapAll('<div />');
JS小提琴演示。
References:
引用:
-
andSelf()
. - andSelf()。
-
nextUntil()
. - nextUntil()。
-
wrapAll()
. - wrapAll()。