我试图将表情符号(图像)的html替换为纯文本。但我需要显示普通的HTML。
在这里:http://jsfiddle.net/xk2VX/
我正在使用:
$("code").each(function() {
var a = ['<img class="smile" src="http://static.yamma.org/images/icons/smile.png">', '<img class="laugh" src="http://static.yamma.org/images/icons/laugh.png">'],
b = [":)", ":D"];
for (var d = 0; d < a.length; d++) {
var e = $(this).html(),
f = e,
g = f.indexOf(a[d]);
while (g != -1) {
f = f.replace(a[d], b[d]);
g = f.indexOf(a[d]);
}
$(this).text(f);
}
});
它返回:<div>Hi</div> :) :D :) :D
;
但它应该返回:<div>Hi</div> :) :D :) :D
;
我只是不明白为什么<
和>
被<
和>
取代
有解决方法吗?提前谢谢。
答案 0 :(得分:4)
我注意到,当您应该拨打.text()
时,即使您在开头正确拨打.html()
时,也会在for循环结束时致电.html()
:
for (var d = 0; d < a.length; d++) {
var e = $(this).html(),
f = e,
g = f.indexOf(a[d]);
while (g != -1) {
f = f.replace(a[d], b[d]);
g = f.indexOf(a[d]);
}
$(this).text(f);
}
.text()
始终将HTML特殊字符转换为实体,因此它们不会被视为标记,因为它需要 text ,而不是 HTML 。
答案 1 :(得分:0)
有时阅读API会有所帮助:http://api.jquery.com/text/#text2 - 致电.text()
时,
用其HTML实体等价物替换特殊字符
所以,就像@BoltClock说的那样,你正在使用错误的方法来做你想做的事。