Javascript 使用jQuery从字符串中删除HTML标记

Javascript 使用jQuery从字符串中删除HTML标记,javascript,jquery,html,Javascript,Jquery,Html,我有一个简单的字符串 var s = "<p>Hello World!</p><p>By Mars</p>"; var s=“你好,世界!由Mars制作”; 如何将s转换为jQuery对象?我的目标是删除s和s。我本可以使用正则表达式来实现这一点,但这相当简单。以最简单的形式(如果我理解正确的话): var s=“你好,世界!由Mars制作”; var o=$(s); var text=o.text(); 或者,您可以将条件选择器与搜索上下文

我有一个简单的字符串

var s = "<p>Hello World!</p><p>By Mars</p>";
var s=“你好,世界!

由Mars制作

”;
如何将
s
转换为jQuery对象?我的目标是删除
s和

s。我本可以使用正则表达式来实现这一点,但这相当简单。

以最简单的形式(如果我理解正确的话):

var s=“你好,世界!

由Mars制作

”; var o=$(s); var text=o.text();
或者,您可以将条件选择器与搜索上下文一起使用:

// load string as object, wrapped in an outer container to use for search context
var o = $("<div><p>Hello World!</p><p>By Mars</p></div>");

// sets the context to only look within o; otherwise, this will return all P tags
var tags = $("P", o); 

tags.each(function(){
    var tag = $(this); // get a jQuery object for the tag
    // do something with the contents of the tag
});
//将字符串作为对象加载,包装在外部容器中以用于搜索上下文
var o=$(“你好,世界!

由Mars制作

”; //将上下文设置为仅在o内查看;否则,将返回所有P标记 变量标记=$(“P”,o); tags.each(函数(){ var tag=$(this);//获取标记的jQuery对象 //对标签的内容做些什么 });

如果您正在解析大量HTML(例如,解释屏幕截图的结果),请使用服务器端HTML解析库,而不是jQuery(这里有大量关于HTML解析的帖子)。

如果您不需要正则表达式,为什么不:

var s = "<p>Hello World!</p><p>By Mars</p>";
s = s.replace('<p>', '').replace('</p>', '');
var s=“你好,世界!

由Mars制作

”; s=s.replace(“”,“”)。replace(“

”,“”);
要获取所有字符串,请使用

var s = "<p>Hello World!</p><p>By Mars</p>";
var result = "";
$.each($(s), function(i){
    result += " " + $(this).html();
});
var s=“你好,世界!

由Mars制作

”; var结果=”; $。每个($(s),功能(i){ 结果+=“”+$(this.html(); });
除非这正是OP需要的表达式,否则如果标记的大小写不同或标记中有属性,字符串替换将中断。尽管它只更改第一次出现的情况=\n我不会说s=s.replace(//I',);badoh确定吗,如果涉及到属性解析,它也是一个简单的正则表达式。。。s=s.替换(/]*>/i',);关于SO(包括me)的普遍共识是,使用正则表达式解析HTML不是理想的解决方案:。它可以在简单的情况下工作,但与使用浏览器DOM的jQuery或健壮的服务器端解析器(进行逐字符分析并考虑有效/无效HTML中存在的所有可能性)相比,它非常脆弱。这个答案与使用正则表达式的问题完全相同。虽然我同意,如果问题中提到的“简单字符串”将遵循该格式,那么字符串替换(带或不带正则表达式)就可以了不起作用。它与
o.find('p')
相同,意味着它查找所选元素的
p
-后代。但是选择的元素已经是
p
元素了。@FelixKling-你完全正确……我不应该在凌晨2点写代码。我将更新我的示例,因为我认为上下文选择器是一个有用的选项。您应该更好地阅读文档:@hippietrail:后者。公认的答案,即
.text()
确实满足了我的需要。
var s = "<p>Hello World!</p><p>By Mars</p>";
var result = "";
$.each($(s), function(i){
    result += " " + $(this).html();
});