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

时间:2014-02-04 09:42:01

标签: javascript jquery

我有一个字符串,我想删除所有的数字标签。我尝试过以下方法:

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。

1 个答案:

答案 0 :(得分:3)

您可以将string包装在jQuery对象中并执行某种类似的操作:

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

<强> USAGE

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)