使用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 我建议 $.parseHTML
将 keepScripts
参数设置为 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代码[重复]的主要内容,如果未能解决你的问题,请参考以下文章
JavaScript 从Javascript中的字符串中剥离html标记
如何使用 jQuery DataTables 从数据库中显示特定数量的 HTML 表中的项目?