删除嵌套代码的最简单方法

时间:2015-10-01 13:25:34

标签: javascript jquery html tags nested

我正在寻找使用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。

有什么建议吗?

3 个答案:

答案 0 :(得分:3)

为简单起见,您可以尝试这样做:

$("body *").each(function () {
    if ($(this).parents(this.nodeName.toLowerCase()).length) $(this).contents().unwrap();
});

-DEMO-

答案 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();
});