如何删除没有子元素的 div 元素

5
我想删除一个div元素,但不包括其子代。例如,假设我有一个带有id为wrapper的div,里面有5个段落。

我只想删除wrapper div,但是保留段落。我尝试了remove()和detach()方法,但它们都会清除内部元素。

有什么建议吗?


1
旧问题,可能有过时的答案:https://dev59.com/_EvSa4cB1Zd3GeqPcjjI - Robert Harvey
4个回答

14

http://api.jquery.com/unwrap/ 应该可以解决这个问题:

.unwrap() 方法会移除元素的父节点。这个方法实际上是 .wrap() 方法的相反操作。匹配到的元素(以及它们的兄弟元素,如果有的话)会替换它们的父节点在 DOM 结构中的位置...


6

可能是@Robert,但仅使用.unwrap()不会做任何事情(如果您将“parent”用作选择器)。 - Roko C. Buljan

4

查看 .replaceWith()

$('#theDiv').replaceWith($('#theDiv').contents());

你是救星。我正在使用一个CMS,它倾向于通过HTML编辑器添加包装器div到任何内容中。但它搞乱了我的绝对定位元素,所以我需要将其删除。 - fluxus

0
$('#yourdivIDtoremove').replaceWith($(this).text());

应该这么做 ;)


有人在四分钟前已经提供了一个 replaceWith 的答案。 - Robert Harvey
text()会清除HTML标签。 - charlietfl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接