2011-06-20 11 views
5

私が使用して要素にコンテンツを付加することができますことを実現:"<span>"、しかし、myTextであれば、のは言わせjQueryにテキスト(HTMLではなく)を追加する方法は?

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

は、私が実際にテキストを表示することを望むが、.prepend()は、代わりに空のspan要素を付加します。これを解決するにはどうすればよいでしょうか?私は実際に手動でテキストをHTMLエスケープする必要がありますか、それとももっと優雅なものがありますか?

答えて

4

あなたはtextnodeを作成し、そこに内容を入れて、prependことができます。

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

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

+0

やあ、このバイオリンは場合には動作しません。 plchが提供する解決策があれば です。 TIA :) –

1

HTMLエンティティが私の意見では、OKです:

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

あなたがかもしれません先端のエンティティを自動化してhttp://debuggable.com/posts/encode-html-entities-with-jquery:480f4dd6-13cc-4ce9-8071-4710cbdd56cb

それとも、関数内で、前の先端を包むことにより、簡素化する可能性があります:

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

あなたもにhtmlentities JavaScriptで、あなたはPHP-JSプロジェクトで利用可能なコードを使用することができますPHPの関数を作成したい場合

どちらの場合も
function htmlentities(string) { 
    return $('<div/>').text(string).html(); 
} 

、あなたはこのようにhtmlentities関数を使用します。

$(...).prepend(htmlentities('<span>')); 
4

はあなたではなくprependtext機能を使用し、単に新しいテキストの最後に元のテキストを追加することができます:あなたはこの受け入れ答えのようにHTMLエンコード(およびデコード)機能を実装することができ

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

+2

元の要素*にhtmlも含まれているとどうなりますか?それはすべて**失われます**。 – Niklas

+0

確かに...それは良い点です!あなたの方法は間違いなく良いです。 –

関連する問題