【发布时间】:2012-10-02 20:01:28
【问题描述】:
在我的网络浏览器用户脚本项目中,我只需要替换一个文本节点,而不会影响与文本相同的父节点下的其他 HTML 元素。而且我需要用多个节点替换它:
<div id="target"> foo / bar; baz<img src="/image.png"></div>
需要成为:
<div id="target"> <a href="#">foo</a> / <a href="#">bar</a>; <a href="#">baz</a><img src="/image.png"></div>
我知道 jQuery 对文本节点的支持并不多。我知道我可以使用直接 DOM 调用而不是 jQuery。而且我知道我可以做类似$('#target').html(my new stuff + 我不想改变的东西)。另请注意,我想保留初始空间,这本身似乎很棘手。
我想在这里问专家的是,有没有最惯用的 jQuery 方法来做到这一点?
【问题讨论】:
-
你怎么知道在哪里分解替换文本?
-
@j_mcnally:假设我们有“某种方式”来生成替换文本/HTML。在我的实际项目中,我将原始文本解析为一些对象,然后我使用这些对象生成基本相同的文本,但将某些单词更改为链接。
-
我不知道任何 jQuery 解决方案;但我确实写了一个高亮功能,它的功能接近你想要完成的:jsfiddle.net/rkw79/5cCuc
-
@rkw:是的,这绝对是一个相关的问题。
标签: jquery dom-manipulation replacewith