2012-03-17 18 views
13

¿Cómo puedo eliminar un elemento pero no el contenido dentro de ese elemento?¿Cómo eliminar un elemento pero no el contenido que contiene?

<a href="#"> 
    <span> 
     <img src="pic-1.jpg"/> 
    </span> 
</a> 

Quiero eliminar la span que envuelve la imagen.

para que pueda obtener,

<a href="#"> 

    <img src="pic-1.jpg"/> 

</a> 
+0

duplicado posible de [Quitar una etiqueta HTML, pero mantener el innerHtml] (http://stackoverflow.com/questions/4232961/remove-a-html-tag-but-keep-the-innerhtml) – Dzyann

Respuesta

31

Usted necesita unwrap

$('img').unwrap(); 
+0

¡eso es fabuloso! ¡Gracias! – laukok

+0

Ooh, buena función. +1 para buscar realmente en lugar de hacer lo que hice. –

+0

Sé que esto es Q & A es viejo, pero ¿qué hay de desenvolver el texto? Es posible desenvolver un elemento, pero ¿qué hay del texto sin formato? –

4

La función jQuery unwrap() es lo que está buscando:

expulsar a los padres del conjunto de elementos coincidentes del DOM, dejando los elementos coincidentes en su lugar.

Consulte the API doc page para obtener más información.

+0

¡eso es genial gracias! :-) – laukok

1

Vas a tener que modificar su arquitectura HTML un poco aquí: solución

<a href="#" id="my_href"> 
    <span id="my_span"> 
     <img src="pic-1.jpg"/> 
    </span> 
</a> 

jQuery: solución

$("#my_href").html($("#my_span").html()); 

no jQuery:

document.getElementById("my_href").innerHTML = document.getElementById("my_span").innerHTML; 
+3

Usar HTML como este es generalmente una mala práctica. Está destruyendo y recreando nodos en lugar de simplemente reubicar los que mantener, y eliminar los que se deben descartar. También destruirá cualquier controlador u otros datos asociados con el elemento 'img'. –

+2

Ah, ¿en serio? De acuerdo, lo evitaré en el futuro entonces. :) –

+0

Eso es ** NO ** solución jQuery! – gdoron

7
$(document).ready(function(){ 
    $span = $('span'); 
    $span.replaceWith($span.html()); 
}); 

ver ejemplo http://jsfiddle.net/vikastyagi87/Xaa39/6/

+0

Creo que esta es la respuesta más completa porque también funciona para desenvolver texto (no solo elementos DOM) – viery365

Cuestiones relacionadas