繁体   English   中英

jQuery从字符串中删除某些标签

[英]jQuery remove certain tags from a string

我有一个要删除所有图形标签的字符串。 我尝试了以下方法:

var s = '<html><body>report content<figure id="fig2" data-contenttype="chart"><img src="chart.jpg"/><div>chart 1</div></figure><div>body content</div><figure id="fig2"><img src="chart2.jpg"/><div>chart 2</div></figure></body></html>';
var result = $(s).find('figure').remove();

这样做不起作用的原因是find找不到图形元素,因为它们有孩子。 有谁知道我如何删除所有的数字节点(以及其中的所有内容),并保持其余的html完好无损?

注意html不在DOM中,我需要通过字符串操作来做到这一点。 我不想碰DOM。

您可以将string包装在jQuery对象中,并进行如下操作:

var removeElements = function(text, selector) {
    var wrapped = $("<div>" + text + "</div>");
    wrapped.find(selector).remove();
    return wrapped.html();
}

用法

var removedString = removeElements('<html><body>report content<figure id="fig2" data-contenttype="chart"><img src="chart.jpg"/><div>chart 1</div></figure><div>body content</div><figure id="fig2"><img src="chart2.jpg"/><div>chart 2</div></figure></body></html>','figure');

这种方法的优点在于,您可以指定要删除的jquery选择器。

保留html和body标签的另一种方法:

var s = '<html><body>report content<figure id="fig2" data-contenttype="chart"><img src="chart.jpg"/><div>chart 1</div></figure><div>body content</div><figure id="fig2"><img src="chart2.jpg"/><div>chart 2</div></figure></body></html>';
var $s = s.replace(/<figure>(.*)<\/figure>/g, "");
console.log($s)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM