Je veux pouvoir dire
$(someElem).text('this\n has\n newlines);
et il est rendu avec des nouvelles lignes dans le navigateur. La seule solution de contournement que j'ai trouvée est de définir la propriété css 'white-space' sur 'pre' sur someElem. Cela fonctionne presque, mais j'ai alors un remplissage énormément grand entre le texte et le haut de someElem, même lorsque je mets le remplissage à 0. Y a-t-il un moyen de se débarrasser de cela?
javascript
jquery
html
Joe Armstrong
la source
la source
<pre>
balises (et utiliser .html () au lieu de .text ()) est la solution la plus simple et la meilleure pour conserver les sauts de ligne à partir d'un fichier texte ou d'un texte brut à mon avis (cela est suggéré par la réponse de Karim ci-dessous). TOUTEFOIS: La nouvelle alternative à cela est d'utiliserwhite-space: pre-wrap;
comme suggéré dans la réponse deappend()
placetest()
et<br/>
au lieu de\n
? comme ça -$(someElem).append("this <br/> has <br/> newlines");
Réponses:
C'est l'année 2015. La bonne réponse à cette question à ce stade est d'utiliser CSS
white-space: pre-line
ouwhite-space: pre-wrap
. Propre et élégant. La version la plus basse d'IE qui prend en charge la paire est 8.https://css-tricks.com/almanac/properties/w/whitespace/
PS
Jusqu'à ce que CSS3 devienne courant,vous devrez probablement couper manuellement les espaces blancs initiaux et / ou de fin.la source
new Date("2016");
Si vous stockez l'objet jQuery dans une variable, vous pouvez le faire:
Si vous préférez, vous pouvez également créer une fonction pour le faire avec un simple appel, tout comme le fait jQuery.text ():
la source
Voici ce que j'utilise:
la source
text.split(/\\n/)
, ou mêmetext.split(/\\\\n|\\n|\n/)
. J'ai rencontré cela en passant du texte au format JSON avec une API qui incorporait\n
des caractères de contrôle littéraux dans des chaînes.Vous pouvez également essayer d'utiliser
.html
, puis envelopper avec des<pre>
balises:la source
Vous pouvez utiliser à la
html
place detext
et remplacer chaque occurrence de\n
par<br>
. Vous devrez cependant bien échapper votre texte.la source
text
alors que cette réponse utilisehtml
directement.Je suggérerais de travailler
someElem
directement avec l' élément, car les remplacements par.html()
remplaceraient également d'autres balises HTML dans la chaîne.Voici ma fonction:
Appelez-le par:
la source
Essaye ça:
la source
L'utilisation de la propriété d'espace blanc CSS est probablement la meilleure solution. Utilisez Firebug ou Chrome Developer Tools pour identifier la source du rembourrage supplémentaire que vous voyiez.
la source