我的内容看起来像这样:
<div id='container'>
.
.
.
<div id='fromHere'>...</div>
foo<br />
bar<br />
<div class='etc">
...
</div>
</div>
我需要在#fromHere之后将#container的内容包装在这样的div中:
<div id='container'>
.
.
.
<div id='fromHere'>...</div>
<div id='newDiv'>
foo<br />
bar<br />
<div class='etc">
...
</div>
</div>
</div>
我想我可以使用像6962614那样的字符串操作来实现它,但这必须是可重用的,所以如果可能的话我更愿意使用JQuery选择器。
答案 0 :(得分:3)
您可以结合使用.contents()
,.slice()
,.index()
和.wrapAll()
:
var $elements = $("#container").contents();
$elements
.slice($elements.index($('#fromHere')) + 1)
.wrapAll('<div id="newDiv"></div>');
这将获取#container
的所有子节点,确定其兄弟姐妹中的#fromHere
索引,获取所有后续兄弟节点并将其包装在新元素中。