是否可以使用jquery text()函数删除字符串中的所有HTML?
包含HTML标记的字符串:
myContent = '<div id="test">Hello <span>world!</span></div>';
结果必须是:
Hello world!
答案 0 :(得分:80)
var myContent = '<div id="test">Hello <span>world!</span></div>';
alert($(myContent).text());
这导致了你好世界。这会回答你的问题吗?
答案 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()