2012-08-10 9 views
15

Conseguir un elemento del DOM como estotexto jQuery(), interpretan <br> como nueva línea

$('#id').content().text(); 

problema surge con

Si se hace esto:

<p>Hello</p> 
<p><br></p> 
<p>World</p> 

Naturalmente, en html se ve así:

Hello 

World 

Pero este método jquery .text() devuelve: HelloWorld

¿Cómo interpretar <br> como una nueva línea? < -> ¿Cómo obtener el texto exactamente como lo veo en HTML?

.html() da todas las etiquetas HTML, que no quiero. Solo necesito el texto sin formato con espacios, si es posible.

Respuesta

20

.text() es texto sin formato. Es literalmente la concatenación de los nodos de texto sin ningún otro código HTML (incluidas las nuevas líneas representadas por las etiquetas <br> o <p>, no por las líneas nuevas).

.html() es el HTML exacto de una etiqueta del envase.

Si utiliza esto, se le dará una aproximación de su texto con nuevas líneas:

var item = document.getElementById("id"); 
var text = item.innerText || item.textContent; 

Se ve tanto en .textContent y .innerText debido a problemas de compatibilidad del navegador.

Ver http://jsfiddle.net/jfriend00/Xs5P3/ para una demostración de trabajo.

Una búsqueda en Google de "HTML a la conversión de texto" da un montón de opciones para investigar.

+0

¿Hay una manera fácil de hacerlo? (elimine todas las etiquetas HTML excepto las de nueva línea) – jacktrades

+0

@jacktrades - Agregué una opción a mi respuesta que parece funcionar. – jfriend00

+0

Solo tenga en cuenta que innerText o textContent NO interpretará etiquetas
como nuevas líneas. Ese violín muestra nuevas líneas porque hay nuevas líneas reales dentro de ese div. Elimine las nuevas líneas en la fuente HTML de violines y los resultados no serán los esperados. – eferrari

Cuestiones relacionadas