如何在JavaScript中仅删除父元素而不删除其子元素?

101

假设:

<div>
  pre text
  <div class="remove-just-this">
    <p>child foo</p>
    <p>child bar</p>
    nested text
  </div>
  post text
</div>

转化为:

<div>
  pre text
  <p>child foo</p>
  <p>child bar</p>
  nested text
  post text
</div>

我一直在尝试使用Mootools、jQuery甚至原生JavaScript,但是都不知道如何实现这个想法。

13个回答

0

使用replaceWith的解决方案仅在存在一个匹配元素时有效。 当存在多个匹配元素时,请使用以下方法:

$(".remove-just-this").contents().unwrap();

0
如果您想在Pyjamas中实现同样的功能,以下是具体步骤。它非常有效(感谢eyelidness)。由于这个方法,我已经成功制作了一个合适的富文本编辑器,可以正常进行样式设置,而不会出现错乱。
def remove_node(doc, element):
    """ removes a specific node, adding its children in its place
    """
    fragment = doc.createDocumentFragment()
    while element.firstChild:
        fragment.appendChild(element.firstChild)

    parent = element.parentNode
    parent.insertBefore(fragment, element)
    parent.removeChild(element)

1
这是哪种语言? - brunoais
看起来像是Python - 这很有道理,因为用户提到了 pyjamas - mgilson

0
如果你正在处理多行数据,就像在我的案例中一样,最好使用类似以下代码的方式:
 $(".card_row").each(function(){
        var cnt = $(this).contents();
        $(this).replaceWith(cnt);
    });

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