web-dev-qa-db-ja.com

jqueryを使用してpreタグのテキストを設定する方法

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);
14
Knox

これは、* nixベースのシステムとWindowsシステムの間の一般的な問題です。誰かがjQuery用の簡単な改行検出プラグインを作成しました改行文字

だから、あなたができることは:

$('#QComment').text(databack.replace(/\r\n/g,EOL));

これは、すべてのウィンドウスタイルの改行を、データを表示するシステムに適した改行に置き換えることです。

15
Adrian Gonzales

私にとっては魅力のように機能します:フィドルデモ

多分あなたはいくつかのエンコーディングの問題がありますか?例が役立つでしょう。

.val()valueタグにpre属性を設定しますが、もちろん効果はありません。)

4
Tgr

このインスタンスではわざわざjQueryを使用せず、単純な古いjavascriptを使用してオブジェクトを設定することをお勧めします。

document.getElementById('QComment').innerHTML = yourHTML;

これほど単純なものにjQueryオーバーヘッドを追加する理由はありません。これを複数の要素で使用する場合は、jQueryで問題ありません。

$('#selector, .selector, [selector]').each(function(element, index){
  element.innerHTML = yourHTML;
});
1
zzzzBov

標準のDOMメソッドを使用してみてください。おそらく、jQueryはそれ自体で何かを実行します。

$('#QComment')[0].innerHTML = html;
0