如何在jQuery中添加文本(而不是HTML)?

时间:2011-06-20 12:36:08

标签: jquery dom-manipulation

我意识到我可以使用以下内容将元素添加到元素中:

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

但是,如果myText"<span>",我实际上希望显示该文本,但.prepend()会预先添加一个空的span元素。推荐的解决方法是什么?我是否真的需要手动HTML转义文本或者是否有更优雅的东西?

4 个答案:

答案 0 :(得分:6)

您可以创建一个textnode并将内容放在那里并prepend

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

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

答案 1 :(得分:4)

您可以使用text功能代替prepend,只需将原始文本添加到新文本的末尾即可:

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

答案 2 :(得分:1)

在我看来,

HTML实体是可以的:

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

您可以使用http://debuggable.com/posts/encode-html-entities-with-jquery:480f4dd6-13cc-4ce9-8071-4710cbdd56cb

处的提示自动化实体
$(...).prepend($('<div/>').text('<span>').html());

如果您还想在Javascript中创建PHP的函数 htmlentities ,您可以使用PHP-JS项目中提供的代码:http://phpjs.org/functions/htmlentities:425

或者您可以通过将上一个提示包装在函数中来简化:

function htmlentities(string) {
  return $('<div/>').text(string).html();
}

在这两种情况下,您都可以使用htmlentities函数:

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

答案 3 :(得分:0)

您可以实现HTML编码(和解码)功能,例如此接受的答案:HTML-encoding lost when attribute read from input field

然后执行:

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