如果尚未包含innerHtml,请将其包含在内

时间:2013-05-06 22:03:29

标签: jquery html

我不知道该怎么做,所以这就是我的困境:

我的div里面有常规文字。然而,在其中添加了一些js跨度之后。但我想将现有文本包装在span标签中。我如何将跨度包装到已经不在跨度的文本中?

Made a fiddle here

<div class="about">
    This text isn't wrapped in an html tag
    <span>But this is</span>
</div>

如何通过jquery将常规文本包装到span标签中?

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

您可以使用jQuery的.contents获取文本节点,如果它们是已检查节点的文本节点子节点,则将它们包装起来。

$(".about").contents().filter(function () {
    return this.nodeType === 3 && this.parentNode == $(".about").get(0);
}).wrap("<span>");

http://jsfiddle.net/ExplosionPIlls/PXTuD/6/

答案 1 :(得分:0)

这可以通过跨越整个事物来实现:

$("div").html("<span>" + $("div").html() + "</span>");