7

次を使用して、要素の先頭に何かを追加できることに気付きました。

$(...).prepend(myText);

ただし、myTextたとえば、 の場合"<span>"、実際にはそのテキストを表示したいのですが、.prepend()代わりに空のスパン要素を先頭に追加します。これを解決するための推奨される方法は何ですか? テキストを手動でHTMLエスケープする必要がありますか、それとももっとエレガントなものがありますか?

4

4 に答える 4

9

テキストノードを作成し、そこにコンテンツを配置することができますprepend

$('div').prepend(document.createTextNode("<span>"));

例: http: //jsfiddle.net/niklasvh/gCKHe/

于 2011-06-20T12:40:37.460 に答える
4

textの代わりに関数を使用してprepend、元のテキストを新しいテキストの末尾に追加するだけです。

$("#elementID").text("<span>" + $("#elementID").text());

于 2011-06-20T12:42:33.503 に答える
1

私の意見では、HTMLエンティティは問題ありません。

$(...).prepend('&lt;span&gt;');

http://debuggable.com/posts/encode-html-entities-with-jquery:480f4dd6-13cc-4ce9-8071-4710cbdd56cbにあるヒントを使用して、エンティティを自動化できます。

$(...).prepend($('<div/>').text('<span>').html());

PHPの関数htmlentitiesもJavascriptで作成する場合は、PHP-JSプロジェクトで入手可能なコードを使用できます:http://phpjs.org/functions/htmlentities :425

または、前のヒントを関数でラップすることで簡略化できます。

function htmlentities(string) {
  return $('<div/>').text(string).html();
}

どちらの場合も、次のようなhtmlentities関数を使用します。

$(...).prepend(htmlentities('<span>'));
于 2011-06-20T12:41:28.850 に答える
0

この受け入れられた回答のように、HTML エンコード (およびデコード) 関数を実装できます: HTML-encoding lost when attribute read from input field

そして、次のようにします。

$(...).prepend(htmlEncode(myText));
于 2011-06-20T12:45:11.413 に答える