2010-04-26 33 views

Respuesta

5

Aquí es mi idea:

function removeText(element){ 
    var newElement = $('<' + element[0].nodeName + '/>'); 
    element.children().each(function(){ 
     newElement.append(this); 
    }); 
    element.replaceWith(newElement); 
} 
+3

función stripText (elemento) { \t \t elemento var = elemento [0]; \t \t var newElement = $ ('<' + item.nodeName + '/>'); \t \t for (i = 0; i Mandrake

+0

+1 La solución de Mandrake resuelve el problema de los atributos del elemento que se eliminan. –

-8
$('#someElement').text(''); 
+1

son u seguro? también elimina a los niños. Tal vez porque uso jquery 1.2.3 – aneuryzm

+1

esto elimina a todos los niños en 1.4.2 así como – Rudism

+0

Rudismo es correcto. Elimina todo dentro del elemento, incluidos los hijos. – Davis

-4

no se puede hacer that.Unless que está envuelto por un elemento.

6

Esto funciona para mí:

$(elem).html($(elem).html().replace($(elem).text(),'')); 

Esto creó el contenido HTML sin el contenido del texto, significa que cualquier etiqueta HTML dentro de elem se mantienen sin cambios.

antes:

<div>Hello<input type="text" name="username" value="world!"/></div> 

después:

<div><input type="text" name="username" value="world!"/></div> 

bye

+2

Por favor, agregue algunas explicaciones. –

+1

Hay algunos problemas con esto:. 1) de edición de HTML con funciones de cadena como reemplazan puede romper el marcado (por ejemplo, si el texto es '' o '"'), 2) se sustituye nada que coincida con el texto (por ejemplo, si el archivo. texto es 'usuario', entonces el atributo de nombre va a cambiar), 3) Si el texto se extiende entre los niños no va a funcionar (por ejemplo "

Hello
World
") – Warbo

39

mejor y fácil solución para eliminar todos los elementos de texto de cierta div es

$("#firstDiv").contents().filter(function(){ 
    return (this.nodeType == 3); 
}).remove(); 
+3

excelente solución. funciona para mí. – jwinn

Cuestiones relacionadas