Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jQuery删除父项但保留子项_Javascript_Jquery - Fatal编程技术网

Javascript 使用jQuery删除父项但保留子项

Javascript 使用jQuery删除父项但保留子项,javascript,jquery,Javascript,Jquery,我希望使用jQuery删除父项并将子项保留在HTML中。这项工作: $('#my_span').children().insertBefore('#my_span').end().end().remove(); 但是,它会删除文本和注释节点类型-如何修改它以保留文本 也很乐意使用纯Javascript实现这一点。您是否尝试过在jQuery库中使用该方法?如果它保留了文本和注释,您可以将代码缩减为: $('#my_span').unwrap(); 如果不希望删除所有子元素,可以使用以下修改的展

我希望使用jQuery删除父项并将子项保留在HTML中。这项工作:

$('#my_span').children().insertBefore('#my_span').end().end().remove();
但是,它会删除文本和注释节点类型-如何修改它以保留文本

也很乐意使用纯Javascript实现这一点。

您是否尝试过在jQuery库中使用该方法?如果它保留了文本和注释,您可以将代码缩减为:

$('#my_span').unwrap();
如果不希望删除所有子元素,可以使用以下修改的展开方法()扩展jQuery,该方法将用子元素替换元素:

$.fn.myUnwrap = function() {
    this.parent(':not(body)').each(function(){
        $(this).replaceWith( this.childNodes );
    });
    return this;
};
然后使用它会很容易:

$('#my_span').myUnwrap();

As@Cᴏʀʏ说,
unwrap()
应该能帮助你实现这一点

或者,您可以这样做:

$('#my_span').parent().html($('#my_span').html());
你可以试试

$($("#my_span")[0].inntHTML).insertBefore("#my_span");
$("#my_span").remove();
HTML:

HTML结果

<h2>headline</h2>
<p>Hallo Du!</p>
标题
你好,杜

  • 使用jQuery.contents只需从 容器(#my_span)并将其作为我的内容保留
  • 然后只需通过将容器替换为其内容。replaceWith

  • 我不再使用“展开”,因为对于不同的元素,例如有子元素的
    ul
    ,我不想删除它们,但“展开”会删除它们。为了克服这个问题,我必须使用一个条件来检查它是什么类型的元素,然后计算出展开的深度,但这对我来说不起作用。你能告诉我们你正在使用的实际HTML吗?此外,
  • 元素不能存在于
    之外——如果将其展开,则应将其移除。
    var my_span_Content = $("#my_span").contents();
    $("#my_span").replaceWith(my_span_Content);
    
    <h2>headline</h2>
    <p>Hallo Du!</p>