删除字符串中的所有HTML标签(使用jquery text()函数)

时间:2011-10-25 13:11:06

标签: jquery string text

是否可以使用jquery text()函数删除字符串中的所有HTML?

包含HTML标记的字符串:
myContent = '<div id="test">Hello <span>world!</span></div>';


结果必须是:
Hello world!

6 个答案:

答案 0 :(得分:80)

var myContent = '<div id="test">Hello <span>world!</span></div>';

alert($(myContent).text());

这导致了你好世界。这会回答你的问题吗?

http://jsfiddle.net/D2tEf/示例

答案 1 :(得分:25)

我创建了这个测试用例:http://jsfiddle.net/ccQnK/1/,我使用Javascript替换函数和正则表达式来获得你想要的结果。

$(document).ready(function() {
    var myContent = '<div id="test">Hello <span>world!</span></div>';
    alert(myContent.replace(/(<([^>]+)>)/ig,""));
});

答案 2 :(得分:11)

如果您需要删除HTML但不知道它是否实际包含任何HTML标记,则无法直接使用jQuery方法,因为它会返回非HTML文本的空包装。

$('<div>Hello world</div>').text(); //returns "Hello world"
$('Hello world').text(); //returns empty string ""

您必须将文本包装在有效的HTML中:

$('<div>' + 'Hello world' + '</div>').text();

或者使用方法$ .parseHTML()(因为jQuery 1.8)可以处理HTML和非HTML文本:

var html = $.parseHTML('Hello world'); //parseHTML return HTMLCollection
var text = $(html).text(); //use $() to get .text() method

Plus parseHTML完全删除脚本标记,这对用户输入的防黑客保护非常有用。

$('<p>Hello world</p><script>console.log(document.cookie)</script>').text();
//returns "Hello worldconsole.log(document.cookie)"

$($.parseHTML('<p>Hello world</p><script>console.log(document.cookie)</script>')).text();
//returns "Hello world"

答案 3 :(得分:7)

你能不只是try it

myContent = '<div id="test">Hello <span>world!</span></div>';
console.log($(myContent).text()); //Prints "Hello world!"

请注意,您需要将字符串包装在jQuery对象中,否则它显然不会有text方法。

答案 4 :(得分:5)

替代方案:

 $("<p>").html(myContent).text();

答案 5 :(得分:0)

我在特定情况下发现我只需要修剪内容。也许不是问题中的答案。但我认为无论如何我都应该添加这个答案。

$(myContent).text().trim()