remove wrapping div and leave all sub-divs intact?

前端 未结 4 1267
青春惊慌失措
青春惊慌失措 2020-12-01 09:35

I have one wrapper div with several sub-divs inside and tags inside those sub-divs as well. I want to remove the wrapper div. I have considered JQuery\'s unwrap, but it ap

相关标签:
4条回答
  • 2020-12-01 09:59

    The unwrap method will work fine (you can select any of/any number of the siblings):

    $("#innerDiv1").unwrap();
    

    From the docs (emphasis added):

    The matched elements (and their siblings, if any) replace their parents within the DOM structure.

    0 讨论(0)
  • 2020-12-01 10:01
    function unwrap(el){
        var parent = el.parentNode; // get the element's parent node
        while (el.firstChild){
            parent.insertBefore(el.firstChild, el); // move all children out of the element
        }
        parent.removeChild(el); // remove the empty element
    }
    

    The code is straight forward and much faster than the corresponding jQuery's method $.unwrap().

    Source: https://plainjs.com/javascript/manipulation/unwrap-a-dom-element-35/

    0 讨论(0)
  • 2020-12-01 10:21

    To add on to @james

    You can do something like this

    var innerDivs = $("#wrapper").html();
    $("#wrapper").remove();
    $("body").append(innerDivs);​ // you will need to change this to append to whatever element you like
    

    jsfiddle example

    http://jsfiddle.net/dAZ9D/

    0 讨论(0)
  • 2020-12-01 10:24

    Another solution would be to use .replaceWith() in conjunction with .html():

    jQuery('#wrapper').each(function () {
        var t = jQuery(this);
        t.replaceWith(t.html());
    });
    
    0 讨论(0)
提交回复
热议问题