Javascript 查找并替换正文中的所有字符串,但忽略具有字符串值的属性

Javascript 查找并替换正文中的所有字符串,但忽略具有字符串值的属性,javascript,jquery,Javascript,Jquery,使用Javascript/jQuery,我希望找到并替换所有“foo”的实例到bar,但忽略所有碰巧是属性值的“foo”实例 例如: <p><a class="foo" id="foo" href="foo.html">foo</a>foo</a></p> foo 应该成为 <p><a class="foo" id="foo" href="foo.html"><span class="fixed">

使用Javascript/jQuery,我希望找到并替换所有“foo”的实例到bar,但忽略所有碰巧是属性值的“foo”实例

例如:

<p><a class="foo" id="foo" href="foo.html">foo</a>foo</a></p>
foo

应该成为

<p><a class="foo" id="foo" href="foo.html"><span class="fixed">bar</span></a></p>


这个例子就是我遇到的问题

关于foo

在该示例中,链接的属性也会更改

您可以使用
.html(函数)
.replace()
,使用
RegExp
/foo/g
和替换字符串
“bar”
。如果回调函数中的
不包含
。childNodes
返回
text
参数,并将
替换(/foo/g,“bar”)
链接,否则迭代元素的子节点,匹配
中的节点。nodeName
#text
,替换匹配节点的
。textContent
。使用
Node.replaceChild()
将匹配的
#text
节点替换为
元素

$(“body*”).html(函数(\ux,文本){
如果(!this.children.length){
返回文本。替换(/foo/g,'bar'))
}
否则{
var el=这个;
对于(变量i=0;i


关于foo
然后只替换文本内容而不是内部HTML。您是否需要处理
foo
?@T.J.Crowder否,只是想替换是否找到了确切的字符串“foo”。此示例就是我遇到的问题
About foo
在该示例中,链接的属性被更改为当我使用该代码段时,其中的所有HTML都被剥离,我认为这是因为使用了.text()而不是.HTML()@Hochmia请参阅更新的帖子。修复了一个问题,但跨度是作为文本而不是HTML插入的。我想把字符串包装成一个span,但span显示为文本。你是什么意思?最初的问题是替换文本,而不是创建元素,是吗?如果文本节点将
.textContent
设置为
“foo”
,则该节点是
元素的子节点,则会发生什么情况?很抱歉造成混淆。简而言之,需要找到字符串'foo'并替换为'bar'。我遇到的问题是,如果HTML元素类或id中存在“foo”,JS将替换它并破坏标记。