2010-04-27 41 views
10

Quiero eliminar el lapso usando jQuery, He intentado el .unwrap(); pero no está funcionando.¿Cómo eliminar solo la etiqueta usando jQuery?

<div> 
<ul> 
<li><a href="#"><span>link</span></a></li> 
<li><a href="#"><span>link</span></a></li> 
</ul> 
</div> 
+0

Y cómo está usted tratando de hacer eso, ¿por qué no funciona y lo que es Está haciendo? –

+1

Es probable que su consulta sea incorrecta, desenvolver() debería hacer el truco. Por favor, brinde más información! –

+0

muestra .unwrap() no es una función. :( –

Respuesta

21

Obviamente, unwrap no funciona como los span s sólo tienen nodos de texto dentro de ellos y jQuery no maneja texto nodos demasiado bien ... Sin embargo esto funciona (se puede usar también jQuery.text en lugar de jQuery.html si usted puede estar seguro de que el span solamente contiene texto):

$('li a span').replaceWith($('li a span').html()); 

Working example

Editar: En realidad, parece que unwrap funciona tan bien si se utiliza jQuery.contents para evitar la incapacidad del jQuery para seleccionar directamente los nodos de texto:

$('li a span').contents().unwrap(); 
+0

+1 bonito combo allí – jAndy

-1
+3

Creo que quiere eliminar la etiqueta 'span' sin eliminar su contenido, es decir, 'unwrap' (que parece que no puede funcionar) – falstro

+0

Oh, supongo que sí, un poco preventivo con el "eliminar el span usando jQuery ":( –

3
$('li').find('span').remove(); 

o

$('li').find('span').detach(); 

Si desea eliminar sólo el envoltorio, tratar

var buffer = $('li').find('span').text(); 
$('li').find('span').parent().html(buffer); 
0

Unwrap debería funcionar. Es posible que no estés seleccionando con éxito el tramo que deseas desenvolver. Puede probar el siguiente código que debe seleccionar ese lapso de éxito:

$("li a span").unwrap() 

Es un poco claro de su pregunta qué es exactamente lo que estamos tratando de hacer. Tampoco está claro si tiene problemas con los selectores o con jquery api. Para obtener un mejor manejo de los selectores de jquery, le recomiendo que instale firebug y firequery, ya que realmente puede ayudarlo a comprender lo que está seleccionando.

0
$("span").each(function() { 
    var content = $(this).text(); 
    $(this).remove(); 
    $("a").html(content); 
}); 
Cuestiones relacionadas