使用jQuery从数组中的项目中剥离HTML代码[重复]

Posted

技术标签:

【中文标题】使用jQuery从数组中的项目中剥离HTML代码[重复]【英文标题】:Stripping HTML code from an item in an array using jQuery [duplicate] 【发布时间】:2013-01-31 18:26:40 【问题描述】:

我有一个包含字符串值项的 javascript 数组。但是,其中一些项目在html 标记之间包含文本。下面是我的数组的一个示例。

var myArr = ["Weather", "very", "<span style="font-weight:bold;">nice</span>"]

我怎样才能从数组中去除<span></span> 标签,只留下单词nice

我已经研究过使用 jquery 的 .match() 来检测数组是否包含 HTML,但是在 JSFiddle 中测试它时没有成功。

提前谢谢你。

【问题讨论】:

这不是一个有效的数组? 【参考方案1】:

更新

使用$.parseHTML 防止XSS 攻击的更新版本。

myArr = $.map(myArr, function(str, i)
  return $("<div/>").append($.parseHTML(str)).text();
);

以前的更新

也许您可以尝试以下方法:

myArr = $.map(myArr, function(str, i)
  return $("<div/>").html(str).text();
);

See it here.

【讨论】:

你为什么不给他投票? 猜你应该使用$.map而不是grep。 我几乎可以肯定没有$.map,因为Array#map 还不是一个可行的选择。但是,同意 有。 =] jQuery.map 完全符合您的要求,而 jQuery.grep 仅返回原始数组的过滤版本。这意味着,grep 将返回值评估为真/假,然后根据该值从返回值中保留或删除该项目。 是的,只是为了让其他懒得关注文档链接的读者看到。 :P BTW 您的代码存在一个小 XSS 问题:jsfiddle.net/GTyZe/1 我建议 $.parseHTMLkeepScripts 参数设置为 false【参考方案2】:
var newArr = [];
var myArr = ["Weather", "very", "<span style=\"font-weight:bold;\">nice</span>"]
$.each(myArr, function(index, value) 
  newArr.push($('<div/>').html(value).text());
);

Working fiddle.

【讨论】:

以上是关于使用jQuery从数组中的项目中剥离HTML代码[重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用 jquery 从数组列表中添加和删除数组项

使用 jQuery 从 JSON 数组中获取唯一结果

JavaScript 从Javascript中的字符串中剥离html标记

如何使用 jQuery DataTables 从数据库中显示特定数量的 HTML 表中的项目?

.NET 从 HTML 页面中删除/剥离 JavaScript 和 CSS 代码块

什么是加载剥离javascript并将其放入数组以供以后使用的替代方法