jquery – 合并堆叠的DOM元素

我有通过contenteditable div格式化的HTML。 我想让它更简洁,更现代的HTML。 我可以轻松地替换任何b,strong,em,font等标签并用span替换它们,但结果会生成“堆叠”元素。

例如,我可能有:

 some text  

我希望看到:

 some text 

困难的部分是它需要处理:

  some text not underlined  

我已经做了很多搜索和思考,但没有找到任何合理的东西。

好吧,这是一个开始。 显然你的选择器会比span更具体。

 $("span").each(function(){ var $this = $(this); var $contents = $(this).contents(); if($contents.length === 1 && $contents.is("span")){ // only one child (including text nodes) and it is a span, combine copyStylesFromParentToChild(); // need to implement this $this.replaceWith($this.children()); // replace the parent with the child } }); 

这里唯一棘手的部分是copyStylesFromParentToChild 。 我不知道将所有样式从一个元素复制到另一个元素的简单直接方法。 您可以尝试JavaScript和复制样式