我有一个字符串,我想删除所有的数字标签。我尝试过以下方法:
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。
答案 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)