假设我有一个这样的字符串:
<div id="div1"></div>
<div class="aClass" id="div2">
<div id="div3" class="anotherClass"></div>
<div id="div4" />
</div>
<div id="div5"></div>
我想从字符串和div中的所有内容中删除div2
所以我有一个像这样的字符串
<div id="div1"></div>
<div id="div5"></div>
我在想像使用正则表达式来找到id为“div2”的第一个div或div的id是什么,并计算括号,直到它变为“&lt; / div&gt;”。问题是“div3”还有一个“&lt; / div&gt;”在末尾。
我要删除的div的内容可能包含更多或更少的div,然后也是。
有关如何编码的任何想法?
更新:
var htmlText = editor3.getValue();
var jHtmlObject = jQuery(htmlText);
jHtmlObject.find("#div2").remove();
var newHtml = jHtmlObject.html();
console.log(newHtml);
为什么这不会在控制台中返回任何内容?
UPDATE2!: 我做了一个jsFiddle让我的问题可视化.. http://jsfiddle.net/WGXHS/
答案 0 :(得分:13)
只需将字符串放入jQuery并使用find然后删除。
var htmlString = '<div id="div1"></div>\
<div class="aClass" id="div2">\
<div id="div3" class="anotherClass"></div>\
<div id="div4" />\
</div>\
<div id="div5"></div>';
var jHtmlObject = jQuery(htmlString);
var editor = jQuery("<p>").append(jHtmlObject);
editor.find("#div2").remove();
var newHtml = editor.html();
答案 1 :(得分:2)
jQuery .remove()
会做
$("#div2").remove();
答案 2 :(得分:2)
如果您有权使用jQuery并且您的HTML是DOM的一部分,则可以使用$.remove()
EG。 $('#div2').remove();
如果它不是DOM的一部分,并且你有一个字符串,你可以这样做:
$('#div2', $(myHTML)).remove();
答案 3 :(得分:0)
如果您控制生成字符串,则可以使用正则表达式选项,这样您就可以确保属性和缩进的顺序。如果不是你最好的选择是使用HTML解析器。如果你在浏览器中工作,jQuery是一个不错的选择。如果您在服务器端工作,则需要找到所选语言的解析器。