防止jQuery转义html实体

时间:2011-10-14 21:05:45

标签: jquery escaping html-entities

我有一些简单的html编辑器。假设用户类型如下:

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

并保存到某个变量:

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

现在,我正在使用jQuery将此文本附加到某个元素:

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

问题在于它被转义:

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

如何使用&amp; amp;来获得精确的字符串?和&amp; ndash;并且还具有&lt;而不是&amp; lt;因为我需要html标签?

编辑:添加了更多详细信息

2 个答案:

答案 0 :(得分:9)

问题不在于jQuery正在逃避实体。我想如果您使用console.log来编写content字符串,您将看到您的编辑器正在将转义的实体返回给您。

.html() vs .text()的重点是.html()适用于将被视为HTML的HTML。

答案 1 :(得分:1)

我猜你想拥有 正确显示文字<p>Ok, this just &amp;amp; sucks :) &amp;ndash;</p>而不转换它们,以便&amp;ndash;不会转换为&-,然后使用:< / p>

$(this).text(content);

这样做的一个问题是content将作为this元素的网站文本添加。它将创建p元素并将其附加到this

但是如果你想要获得转换的效果,那么你的代码就可以了。

我还想提一件事,我认为语言不是唯一与这些转换相关的语言。 浏览器在这些情况下扮演主要角色。那么,如果浏览器再次检查内容,我们会在脚本中做什么,它会将它们转换为&-