jQuery插入的HTML呈现为纯文本

7

我有一个奇怪的情况,我有那个字符串

lorem<br/><br/>ipsum<br/><br/>a<br/>b<br/><br/>c

这是放到一个div中的:

$('div.desc').html(that_string);

或者

$('div.desc').html($.parseHTML(that_string));

但在这两种情况下,它都被呈现为原始文本:

lorem<br/><br/>ipsum<br/><br/>a<br/>b<br/><br/>c

替代

lorem

ipsum

a
b

c

为什么?

2
这个字符串是HTML编码的。在将其作为HTML解析之前,您需要进行HTML解码。 - techfoobar
如果您从一个 div 中获取而不是从自定义变量中获取,则必须执行以下操作:$('div.desc').html($('#element').html());您将获得一个解码的 HTML 元素。 - MayTheSchwartzBeWithYou
尝试使用Underscore的unescape()函数 - http://underscorejs.org/#unescape - techfoobar
3个回答

20

你只需用一点jQuery解析就可以欺骗它

$('div.desc').html( $('<div />').html(that_string).text() );

FIDDLE


13
$('div.desc').html(decodeURI(that_string));
//OR
$('div.desc').html($.parseHTML(decodeURI(that_string)));
decodeURI()函数将对字符串进行解码,以便输出<>等字符。

0
我曾经遇到过一个类似的问题,使用jQuery时原始HTML被渲染成文本。我通过以下方式解决了这个问题:
目标:var txt = <h3> Hello <b>World</b><h3>$(#class).text(txt) 改为:

$(#class).html(txt)

现在内容以 HTML 的形式显示在网站上。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接