删除包装div并保留所有子div完整?

rob*_*ith 18 jquery

我有一个包装器div,里面有几个子div,并且这些子div内也有标签.我想删除包装器div.我已经考虑过JQuery的解包,但似乎我需要指定子div来告诉Jquery要解包的内容.如果有几个孩子,这会有用吗?

所以,代码看起来像:

<div id="wrapper">
  <div id="innerDiv1"></div>
  <div id="innerDiv2"></div>
  <div id="innerDiv3"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

任何帮助,一如既往,表示赞赏.

谢谢.

Jam*_*ice 31

unwrap方法可以正常工作(您可以选择任意/任意数量的兄弟姐妹):

$("#innerDiv1").unwrap();
Run Code Online (Sandbox Code Playgroud)

从文档(重点补充):

匹配的元素(以及它们的兄弟,如果有的话)在DOM结构中替换它们的父节点.


Jas*_*hal 5

添加到@james

你可以做这样的事情

var innerDivs = $("#wrapper").html();
$("#wrapper").remove();
$("body").append(innerDivs);? // you will need to change this to append to whatever element you like
Run Code Online (Sandbox Code Playgroud)

jsfiddle的例子

http://jsfiddle.net/dAZ9D/

  • 你可以这样做,但是你会失去绑定到`#wrapper`子节点的任何事件处理程序,因为元素会从DOM中完全删除然后再添加.使用`unwrap`方法将保留那些事件处理程序,因为元素永远不会从DOM中删除. (2认同)
  • 不用担心兄弟!干杯! 只是建议一个替代:) (2认同)

Jen*_*ard 5

另一种解决方案是.replaceWith()结合使用.html()

jQuery('#wrapper').each(function () {
    var t = jQuery(this);
    t.replaceWith(t.html());
});
Run Code Online (Sandbox Code Playgroud)