2012-02-21 12 views
16

Tengo un div envoltorio con varios subdivisiones dentro y etiquetas dentro de esos subdivisiones también. Quiero eliminar el envoltorio Div. He considerado que JQuery se desenvuelve, pero parece como si tuviera que especificar los divs para niños para decirle a Jquery qué desenvolver. ¿Funcionará esto si hay varios niños?¿quita envoltura div y deja todos los subdivisiones intactos?

Por lo tanto, el código es el siguiente:

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

Cualquier ayuda, como siempre, se agradece.

Gracias.

Respuesta

27

El método unwrap trabajará muy bien (se puede seleccionar cualquiera de/cualquier número de los hermanos):

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

De la documentación (énfasis añadido):

Los elementos coincidentes (y sus hermanos, si los hay) reemplazan sus padres dentro de la estructura DOM.

+1

Gracias @James Allardice. Aunque revisé los documentos de JQuery, de alguna manera me perdí la parte "y sus hermanos". Poniéndome un poco cansado de ojos, supongo. –

+0

@robertsmith - No hay problema, me alegro de poder ayudar :) –

5

para añadir a @ James

Puede hacer algo como esto

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

ejemplo jsFiddle

http://jsfiddle.net/dAZ9D/

+2

Podrías hacer esto, pero perderías cualquier controlador de eventos vinculado a los hijos de '# wrapper' porque los elementos se eliminan completamente del DOM y luego se vuelven a agregar. Usar el método 'unwrap' preservará esos manejadores de eventos ya que los elementos nunca se eliminan del DOM. –

+0

sí, eso es correcto james, pero él no le preguntó específicamente si mantener el controlador par o no. Es por eso que dije "añadir a la respuesta de James" :) ¡Saludos! –

+0

Lo sé, solo señalándolo en el caso :) –

0
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 
} 

El código es sencillo y mucho más rápido que el jQ correspondiente El método $ .unwrap() de uery.

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

Cuestiones relacionadas