Estoy usando una etiqueta previa para contener un texto sin formato que tiene retornos de carro. Cuando la página se muestra por primera vez, se ve bien. Más tarde, quiero actualizar solo los datos previos. He intentado dos formas de hacer esto con jquery, una usando .html() y la otra con .text(). ¡Ambos funcionan, pero el .html descarta los retornos de carro y el .text hace doble espacio en los retornos de carro! También probé .val() pero eso no funcionó en absoluto. Aquí está el código (por supuesto, solo uso una de las líneas jquery a la vez).
<pre id="QComment">Initial Text</pre>en algún momento después,
$('#QComment').text(databack); // or $('#QComment').html(databack);Este es un problema común entre los sistemas basados en *nix y los sistemas de Windows. Alguien escribió un complemento de detección de nueva línea simple para jQuery newlinecharacter
Entonces, lo que puedes hacer es:
$('#QComment').text(databack.replace(/\r\n/g,EOL));Lo cual, lo que está haciendo es reemplazar todos los saltos de línea de estilo de Windows con los apropiados para el sistema que ve los datos.
Funciona de maravilla para mí: demostración de violín
¿Quizás tienes algún problema de codificación? Un ejemplo ayudaría.
( .val() establece el atributo de value en la etiqueta pre , que por supuesto no tiene ningún efecto).
Sugeriría no molestarse en usar jQuery en este caso, y simplemente configurar el objeto usando javascript simple y antiguo:
document.getElementById('QComment').innerHTML = yourHTML;No hay razón para agregar la sobrecarga de jQuery a algo tan simple como esto. Si desea usar esto en varios elementos, jQuery está bien:
$('#selector, .selector, [selector]').each(function(element, index){ element.innerHTML = yourHTML; });