如何使用jQuery将HTML转换为文本?

Kre*_*rev 6 html jquery code-snippets

我想这样做,以便具有"片段"类的任何元素的子元素被读作文本而不是HTML.我知道要这样做,我需要更改<>标记,以便HTML页面将它们作为文本读取.我一直试图这样做但不幸的是,我只有:

function(){
$('.snippet') 
}
Run Code Online (Sandbox Code Playgroud)

Jas*_*per 14

您可以使用jQuery的.text()功能删除HTML标签:

var text_only = $('.snippet').text();
Run Code Online (Sandbox Code Playgroud)

这是一个演示:http://jsfiddle.net/meZjw/

文档.text():http://api.jquery.com/text

UPDATE

Sime Vidas有一个很好的观点,你可以迭代不同的.snippet元素,一次改变一个HTML结构:

$.each($('.snippet'), function (index, obj) {
    var $this = $(this);
    $this.html($this.text());
});
Run Code Online (Sandbox Code Playgroud)

这是一个使用的演示$.each():http://jsfiddle.net/meZjw/1/

UPDATE

Aepheus有一个很好的观点,我不知道这是否是被问到的,但你可以创建一个像其他语言一样逃避HTML实体的函数:

function htmlEntities(str) {
    return String(str).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;');
}
Run Code Online (Sandbox Code Playgroud)

这是演示:http://jsfiddle.net/meZjw/2/

UPDATE

您也可以使用.text().html()上面示例相反的顺序,将元素的HTML显示为纯文本:

$.each($('.snippet'), function (index, obj) {
    var $this = $(this);
    $this.text($this.html());
});
Run Code Online (Sandbox Code Playgroud)

这是一个演示:http://jsfiddle.net/meZjw/31/

  • 为什么这会被投票,最好我可以告诉它不回答这个问题.对于"<p> test </ p>"..text()将返回"test",所需的返回值为"<p> test </ p>".而下半部分,如何在页面上显示这个没有回答. (2认同)

Ble*_*der 10

这应该工作:

$('.snippet').each(function() {
  $(this).text($(this).html());
});
Run Code Online (Sandbox Code Playgroud)

现场演示: http ://jsfiddle.net/RrUAA/1/