Ich möchte sagen können
$(someElem).text('this\n has\n newlines);
und es wird mit Zeilenumbrüchen im Browser gerendert. Die einzige Problemumgehung, die ich gefunden habe, besteht darin, die CSS-Eigenschaft 'white-space' für someElem auf 'pre' zu setzen. Das funktioniert fast, aber dann habe ich einen ärgerlich großen Abstand zwischen dem Text und der Oberseite von someElem, selbst wenn ich den Abstand auf 0 setze. Gibt es eine Möglichkeit, dies loszuwerden?
javascript
jquery
html
Joe Armstrong
quelle
quelle
<pre>
Umschließen mit Tags (und die Verwendung von .html () anstelle von .text ()) ist meiner Meinung nach die einfachste und beste Lösung, um Zeilenumbrüche aus einer Textdatei oder aus einfachem Text beizubehalten (dies wird durch Karims Antwort unten vorgeschlagen). JEDOCH: Die neuere Alternative dazu ist die Verwendungwhite-space: pre-wrap;
in Cleongs Antwortappend()
anstelle vontest()
und<br/>
anstelle von verwenden\n
? so -$(someElem).append("this <br/> has <br/> newlines");
Antworten:
Es ist das Jahr 2015. Die richtige Antwort auf diese Frage lautet derzeit CSS
white-space: pre-line
oderwhite-space: pre-wrap
. Sauber und elegant. Die niedrigste Version von IE, die das Paar unterstützt, ist 8.https://css-tricks.com/almanac/properties/w/whitespace/
PS
Bis CSS3 üblich wird, müssenSie wahrscheinlich anfängliche und / oder nachfolgende Leerzeichen manuell abschneiden.quelle
new Date("2016");
Wenn Sie das jQuery-Objekt in einer Variablen speichern, können Sie Folgendes tun:
Wenn Sie möchten, können Sie auch eine Funktion erstellen, um dies mit einem einfachen Aufruf zu tun, genau wie es jQuery.text () tut:
quelle
Folgendes benutze ich:
quelle
text.split(/\\n/)
oder sogar teilentext.split(/\\\\n|\\n|\n/)
. Ich bin darauf gestoßen, als ich Text im JSON-Format mit einer API weitergegeben habe, die Literal-\n
Steuerzeichen in Zeichenfolgen eingebettet hat .Alternativ versuchen Sie es mit
.html
und dann wickeln mit<pre>
Tags:quelle
Sie können
html
anstelletext
und ersetzen jedes Vorkommen von\n
durch<br>
. Sie müssen Ihren Text jedoch korrekt maskieren.quelle
text
während diese Antworthtml
direkt verwenden.Ich würde vorschlagen,
someElem
direkt mit dem Element zu arbeiten , da das Ersetzen.html()
durch auch andere HTML-Tags innerhalb der Zeichenfolge ersetzen würde.Hier ist meine Funktion:
Nennen Sie es bei:
quelle
Versuche dies:
quelle
Die Verwendung der CSS-Leerraum-Eigenschaft ist wahrscheinlich die beste Lösung. Verwenden Sie die Firebug- oder Chrome Developer Tools, um die Quelle der zusätzlichen Polsterung zu ermitteln, die Sie gesehen haben.
quelle