2011-10-25 27 views

Respuesta

67
var myContent = '<div id="test">Hello <span>world!</span></div>'; 

alert($(myContent).text()); 

que se traduce en hola mundo. Eso responde tu pregunta?

http://jsfiddle.net/D2tEf/ para un ejemplo

+0

O, para decirlo de otra manera, por cualquier cadena valor de x, $ ('' + x + '') .text() == x siempre se evalúa como verdadero. – Jazz

+0

En realidad no es cierto, si la cadena contiene html. – HarryFink

+0

Aún está funcionando. solución simple –

7

se puede no solo try it?

myContent = '<div id="test">Hello <span>world!</span></div>'; 
console.log($(myContent).text()); //Prints "Hello world!" 

en cuenta que necesita para envolver la cadena en un objeto jQuery, de lo contrario no tendrá un método text obviamente.

20

Creé este caso de prueba: http://jsfiddle.net/ccQnK/1/, utilicé la función de reemplazo de Javascript con expresiones regulares para obtener los resultados que desea.

$(document).ready(function() { 
    var myContent = '<div id="test">Hello <span>world!</span></div>'; 
    alert(myContent.replace(/(<([^>]+)>)/ig,"")); 
}); 
+2

Siempre debe publicar la solución real aquí, no solo en jsfiddle o en algún sitio similar. No hay garantía de que el otro sitio esté presente en el futuro. – Blazemonger

+0

desde jsfiddle myContent.replace (/ (<([^>] +)>)/ig, "") – sherif

+0

No es un gran admirador de las soluciones de expresiones regulares. Casi siempre pueden romperse. –

9

Si es necesario eliminar el HTML, pero no se sabe si en realidad contiene ninguna etiqueta HTML, no se puede utilizar el método jQuery directamente porque devuelve envoltorio vacío para el texto no HTML.

$('<div>Hello world</div>').text(); //returns "Hello world" 
$('Hello world').text(); //returns empty string "" 

Debe o bien ajustar el texto en HTML válido:

$('<div>' + 'Hello world' + '</div>').text(); 

O utilice el método $ .parseHTML() (desde jQuery 1.8) que puede manejar HTML y texto no HTML:

var html = $.parseHTML('Hello world'); //parseHTML return HTMLCollection 
var text = $(html).text(); //use $() to get .text() method 

Más parseHTML elimina completamente las etiquetas de secuencia de comandos, lo que es útil como protección anti-piratería para las entradas del usuario.

$('<p>Hello world</p><script>console.log(document.cookie)</script>').text(); 
//returns "Hello worldconsole.log(document.cookie)" 

$($.parseHTML('<p>Hello world</p><script>console.log(document.cookie)</script>')).text(); 
//returns "Hello world" 
3

Una alternativa:

$("<p>").html(myContent).text(); 
0

que encontré en mi caso específico que sólo necesitaba para recortar el contenido. Tal vez no sea la respuesta que se hizo en la pregunta. Pero pensé que debería agregar esta respuesta de todos modos.

$(myContent).text().trim() 
Cuestiones relacionadas