用jQuery包装除标签之外的每个char

时间:2011-04-22 10:17:49

标签: javascript jquery html

我正在尝试将每个文本字符包装在

<div id="test"></div>

带有span标记。 没问题,只是我还需要保持嵌套标签不被修改。

所以如果DIV中的字符串是:

"Some random text, <b>but</b> wait - there's <a href="http://w3.org">tags</a> inside!"

它应该输出“but”部分

<b><span>b</b><span>u</span><span>t</span></b>

离开&lt; B个和&lt;一个&GT;标签,但包括所有其他字符在跨度。我检查了text(),但似乎没有办法保留标签或“保存回来”,只提取文本并永久删除&lt; B个和&lt;一个&GT;

也许有些jQuery大师知道如何做到这一点?

1 个答案:

答案 0 :(得分:6)

您可以使用以下代码执行此操作:

$("div").children().andSelf().contents().each(function(){
    if (this.nodeType == 3) {
        var $this = $(this);
        $this.replaceWith($this.text().replace(/(\w)/g, "<span>$&</span>"));
    }
});

请参阅test case on jsFiddle