使用JQuery包装内容,包括文本

时间:2013-09-16 07:43:28

标签: javascript jquery

我的内容看起来像这样:

<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选择器。

1 个答案:

答案 0 :(得分:3)

您可以结合使用.contents().slice().index().wrapAll()

var $elements = $("#container").contents();
$elements
  .slice($elements.index($('#fromHere')) + 1)
  .wrapAll('<div id="newDiv"></div>');

DEMO

这将获取#container的所有子节点,确定其兄弟姐妹中的#fromHere索引,获取所有后续兄弟节点并将其包装在新元素中。