Quiero poder decir
$(someElem).text('this\n has\n newlines);
y se renderiza con nuevas líneas en el navegador. La única solución que he encontrado es establecer la propiedad css 'espacio en blanco' en 'pre' en someElem. Esto casi funciona, pero luego tengo un relleno molestamente grande entre el texto y la parte superior de someElem, incluso cuando configuro el relleno en 0. ¿Hay alguna manera de deshacerme de esto?
javascript
jquery
html
Joe Armstrong
fuente
fuente
<pre>
etiquetas (y usar .html () en lugar de .text ()) es la solución más fácil y mejor para mantener los saltos de línea de un archivo de texto o de texto sin formato en mi opinión (esto se sugiere en la respuesta de Karim a continuación). SIN EMBARGO: La alternativa más nueva a esto es usarwhite-space: pre-wrap;
como se sugiere en la respuesta deappend()
lugar detest()
y en<br/>
lugar de\n
? así -$(someElem).append("this <br/> has <br/> newlines");
Respuestas:
Es el año 2015. La respuesta correcta a esta pregunta en este momento es usar CSS
white-space: pre-line
owhite-space: pre-wrap
. Limpio y elegante. La versión más baja de IE que admite el par es 8.https://css-tricks.com/almanac/properties/w/whitespace/
PD
Hasta que CSS3 se vuelva común, probablemente necesitará recortar manualmente los espacios en blanco iniciales y / o finales.fuente
new Date("2016");
Si almacena el objeto jQuery en una variable, puede hacer esto:
Si lo prefiere, también puede crear una función para hacer esto con una simple llamada, como lo hace jQuery.text ():
fuente
Esto es lo que uso:
fuente
text.split(/\\n/)
, o inclusotext.split(/\\\\n|\\n|\n/)
. Encontré esto al pasar texto en formato JSON con una API que incrustaba\n
caracteres de control literal en cadenas.Alternativamente, intente usar
.html
y luego envuelva con<pre>
etiquetas:fuente
Puede usar en
html
lugar detext
y reemplazar cada aparición de\n
con<br>
. Sin embargo, tendrá que escapar correctamente de su texto.fuente
text
mientras que esta respuesta usahtml
directamente.Sugeriría trabajar con el
someElem
elemento directamente, ya que los reemplazos con.html()
reemplazarían también otras etiquetas HTML dentro de la cadena.Aquí está mi función:
Llámalo por:
fuente
Prueba esto:
fuente
Usar la propiedad de espacio en blanco de CSS es probablemente la mejor solución. Utilice Firebug o Chrome Developer Tools para identificar la fuente del relleno adicional que estaba viendo.
fuente