我正在寻找使用javascript从DOM元素中删除嵌套标签的最简单方法(编码和执行时间)。
案例:
<i><b>This <b><i>is <u>a</u> new</i></b> test</b></i>
通缉解决方案:
<i><b>This is <u>a</u> new test</b></i>
解决方案通常需要使用所有可能的html标记,而不仅仅是上面的示例。 需要删除所有嵌套标记,同时将内部HTML保留在DOM中。
解决方案可能但不需要使用jQuery。
有什么建议吗?
答案 0 :(得分:3)
为简单起见,您可以尝试这样做:
$("body *").each(function () {
if ($(this).parents(this.nodeName.toLowerCase()).length) $(this).contents().unwrap();
});
答案 1 :(得分:2)
使用find
方法,您可以在<b>
代码中搜索<i>
代码的所有子代:
<强> JS:强>
$('i b').find('b', 'i').contents().unwrap();
答案 2 :(得分:1)
这是A.Woffs关于代码执行的解决方案的一个小改进。 这样,每个dom节点初始化一个jQuery元素。 但是我不会因为这么小的改进而改变对这个答案的接受答案。
$("body *").each(function () {
var $this = $(this);
if ($this.parents(this.nodeName.toLowerCase()).length) $this.contents().unwrap();
});