2011-10-14 19 views
12

私は単純なHTMLエディタを持っています。今jQueryがHTMLエンティティをエスケープするのを防ぐ

var content = "<p>Ok, this just &amp; sucks :) &ndash;</p>"; 

、どこかに私はいくつかの要素にこのテキストを追加するためにjQueryを使用しています:

<p>Ok, this just &amp; sucks :) &ndash;</p> 

、それはいくつかの変数に保存されますのは、以下の、そのユーザの種類を言ってみましょう

$(this).html(content); // where content is the string above 

問題は、それがエスケープされていることです。

<p>Ok, this just &amp;amp; sucks :) &amp;ndash;</p> 

& ampで正確な文字列を得るにはどうすればよいでしょうか。および& ndash; <であり、&ではありません。私はhtmlタグが必要なので?

編集:詳細は、問題がjQueryのエンティティをエスケープしていることではありません

答えて

9

を追加しました。 console.logを使用してcontent文字列を書くと、エディタがエスケープされたエンティティをあなたに返すことがわかります。

.html().text()の全体の点は、HTMLとして扱われるHTMLのための.html()です。

+3

お返事ありがとうございます。さて、 "コンテンツ"は既にエスケープされています(上記の最初のコードと同じテキストが含まれています)。しかし、jQueryは再びそれをエスケープしますので、 '& ; ndash; ' 創造された。 – ladar

1

私はあなたが&amp;ndash;&-に変換されないように、正確に、次に使用し、それらを変換するうちに示される テキスト<p>Ok, this just &amp;amp; sucks :) &amp;ndash;</p>持つようにしたいと思う:

$(this).text(content); 

一つの問題をこれはcontentthis要素のテキストとしてテキストとして追加されることです。 ではなくを作成し、p要素を作成し、thisに追加します。

しかし、変換の影響を受けたい場合は、コードが機能するはずです。

さらに言及したいことは、私は言語がこれらの変換に関連する唯一のものではないと信じています。 ブラウザがこのような場合の主な役割を果たします。だから、もしブラウザが内容を確認する別の機会を得れば、それは&-に変換されます。

関連する問題