Preタグを使用して、キャリッジリターンのある生のフォーマット済みテキストを保持しています。ページが最初に表示されたとき、それは問題なく見えます。後で、事前データだけを更新したいと思います。 jqueryでこれを行う2つの方法を試しました。1つは.html()を使用し、もう1つは.text()を使用します。どちらも機能しますが、.htmlはキャリッジリターンを破棄し、.textはキャリッジリターンのスペースを2倍にします。 .val()も試しましたが、まったく機能しませんでした。これがコードです(もちろん、一度に1つのjquery行のみを使用します)。
<pre id="QComment">Initial Text</pre>
しばらくして、
$('#QComment').text(databack); // or
$('#QComment').html(databack);
これは、* nixベースのシステムとWindowsシステムの間の一般的な問題です。誰かがjQuery用の簡単な改行検出プラグインを作成しました改行文字
だから、あなたができることは:
$('#QComment').text(databack.replace(/\r\n/g,EOL));
これは、すべてのウィンドウスタイルの改行を、データを表示するシステムに適した改行に置き換えることです。
私にとっては魅力のように機能します:フィドルデモ
多分あなたはいくつかのエンコーディングの問題がありますか?例が役立つでしょう。
(.val()
はvalue
タグにpre
属性を設定しますが、もちろん効果はありません。)
このインスタンスではわざわざjQueryを使用せず、単純な古いjavascriptを使用してオブジェクトを設定することをお勧めします。
document.getElementById('QComment').innerHTML = yourHTML;
これほど単純なものにjQueryオーバーヘッドを追加する理由はありません。これを複数の要素で使用する場合は、jQueryで問題ありません。
$('#selector, .selector, [selector]').each(function(element, index){
element.innerHTML = yourHTML;
});
標準のDOMメソッドを使用してみてください。おそらく、jQueryはそれ自体で何かを実行します。
$('#QComment')[0].innerHTML = html;