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

Pet*_*ter 27 string jquery text

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

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


结果必须是:
Hello world!

Ros*_*gan 81

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

alert($(myContent).text());
Run Code Online (Sandbox Code Playgroud)

这导致了你好世界.这是否回答你的问题?

http://jsfiddle.net/D2tEf/举个例子

  • 这个解决方案只有当myContent是一个真正的HTML字符串时,才能推广我认为最好使用的解决方案:stringClean = $("<div>"+ myContent +"</ div>").text(); (4认同)
  • 正如@AlessandroBattistini指出的那样,如果myContent并非恰好是一个真正的HTML字符串,则$$(myContent)将会失败-`$(“ &lt;div&gt;” + myContent +“ &lt;/ div&gt;”)`确保永远不会成为一个问题,因此,这里的答案更好。 (2认同)

小智 26

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

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

  • 你应该总是在这里发布实际的解决方案,而不仅仅是在jsfiddle或类似的网站.无法保证其他网站将来会出现. (2认同)

Rad*_*ech 12

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

$('<div>Hello world</div>').text(); //returns "Hello world"
$('Hello world').text(); //returns empty string ""
Run Code Online (Sandbox Code Playgroud)

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

$('<div>' + 'Hello world' + '</div>').text();
Run Code Online (Sandbox Code Playgroud)

或者使用方法$ .parseHTML()(自jQuery 1.8开始),它可以处理HTML和非HTML文本:

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

加上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"
Run Code Online (Sandbox Code Playgroud)


Jam*_*ice 7

你能不能尝试一下吗?

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

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


Hem*_*ela 6

替代:

 $("<p>").html(myContent).text();
Run Code Online (Sandbox Code Playgroud)