jQuery解包所选元素

时间:2014-12-19 21:38:00

标签: jquery

如何从DOM中删除元素,但仍保留其内容?

我查看了.unwrap(),但这似乎删除了一个元素的父元素,无论它的id或类是什么。

我想选择DOM中的任何元素并将其删除,但仍保留其子元素。我的结构与此类似。

<div class="remove-1">
   <div class="remove-2">

      <span>keep<h1>all</h1>this</span>

   </div>
</div>

我会用它来删除“remove-1”元素

 $(".remove-2").unwrap(); // removes parent "remove-1".

但是我怎么会删除“remove-2”元素,因为那个跨度不会一直存在,而它的父元素可能是我不想删除的另一个元素?

1 个答案:

答案 0 :(得分:1)

使用函数.detach(),当您需要将这些元素附加回DOM时,您将附加到DOM树。

请参阅文档:http://api.jquery.com/detach/


更新1:

如果要打开元素的内容,则需要选择元素子元素并将其全部解包。

$('button').click(function() {
  $("#detach").children().unwrap();
});
#detach {
  background-color: red;
  padding: 10px;
}
span {
  background-color: blue;
  color: white;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h1 id="detach">

  <span>KEEP</span>
  <span>Keep second</span>
</h1>

<button>Unwrap content of red element</button>