javascript文本替换

时间:2011-10-30 11:12:55

标签: javascript jquery replace

我正在使用jquery replaceText plugin。使用此插件,我可以成功替换这样的元素的文本:

<div>some text to be replaced here.</div>
<script type="text/javascript">
$(function(){
    $("div").replaceText("some text to be replaced here", "a new text for replacement");
})
</script>
然而,当那个div变成这样的东西时:

<div>some text to be <a href="somelink">replaced</a> here.</div>

更换不起作用。

我该怎么办?

2 个答案:

答案 0 :(得分:1)

当对页面的HTML进行操作时,所有标记都在HTML流中,因此您不能直接替换文本而不允许插入标记。

它不匹配"some text to be replaced here",因为该HTML文本字符串不作为单个文本字符串存在:

div>some text to be <a href="somelink">replaced</a> here.</div>

您必须将实际存在的单个文本片段替换为"some text to be ""replaced"等单独的文本流。

答案 1 :(得分:1)

因此,您希望将文本的子集替换为另一个文本子集,并且希望跨节点工作。

看起来你想要一个Range

因此,您只需使用Range制作新的document.createRange()即可。指出你的内容开始的位置。

所以只需以某种方式找到起始节点和起始偏移量,然后调用range.setStart(node, offset)。我认为node将是你的容器,并且只是计算了偏移量。

然后调用range.extractContents()从DOM中删除原始文本。

然后只需range.insertNode(textNode)将下一个文本插入DOM。