Удалить 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>
Любая помощь, как всегда, оценивается.
Спасибо.
Ответы
Ответ 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());
});