Удалить wrap div и оставить все поддивы неповрежденными? - программирование
Подтвердить что ты не робот

Удалить wrap div и оставить все поддивы неповрежденными?

У меня есть один div обертки с несколькими суб-div внутри внутри и теги внутри этих sub-divs также. Я хочу удалить оболочку div. Я рассмотрел развертку JQuery, но кажется, что мне нужно указать дочерние divs, чтобы сообщить JQuery, что нужно развернуть. Будет ли это работать, если есть несколько детей?

Итак, код выглядит так:

<div id="wrapper">
  <div id="innerDiv1"></div>
  <div id="innerDiv2"></div>
  <div id="innerDiv3"></div>
</div>

Любая помощь, как всегда, оценивается.

Спасибо.

4b9b3361

Ответ 1

Метод unwrap будет работать нормально (вы можете выбрать любое из/любого числа братьев и сестер):

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

Из документов (выделено мной):

Соответствующие элементы (и их братья и сестры, если они есть) заменяют их родителей в структуре DOM.

Ответ 2

Чтобы добавить к @james

Вы можете сделать что-то вроде этого

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

Пример jsfiddle

http://jsfiddle.net/dAZ9D/

Ответ 3

function unwrap(el){
    var parent = el.parentNode; // get the element parent node
    while (el.firstChild){
        parent.insertBefore(el.firstChild, el); // move all children out of the element
    }
    parent.removeChild(el); // remove the empty element
}

Код является прямым и намного быстрее, чем соответствующий метод jQuery $.unwrap().

Источник: https://plainjs.com/javascript/manipulation/unwrap-a-dom-element-35/

Ответ 4

Другим решением будет использование .replaceWith() в сочетании с .html():

jQuery('#wrapper').each(function () {
    var t = jQuery(this);
    t.replaceWith(t.html());
});