Salmans 的回答效果很好,但如果段落中的单词超过 1 个,则不会被替换。所以改用这个:(使用全局匹配的正则表达式)
function replaceNodeText() {
if (this.nodeType === 3) {
this.nodeValue = this.nodeValue.replace(replaceNodeText.regex, replaceNodeText.replace);
} else {
$(this).contents().each(replaceNodeText);
}
}
replaceNodeText.regex = /some/g;
replaceNodeText.replace = "my";
$("#notice").contents().each(replaceNodeText);
或者使用这个:
(我刚刚将 .replace(x,y) 更改为 .split(x).join(y),这比 replace() 快得多,请参见此处)
function replaceNodeText() {
if (this.nodeType === 3) {
this.nodeValue = this.nodeValue.split(replaceNodeText.find).join(replaceNodeText.replace);
} else {
$(this).contents().each(replaceNodeText);
}
}
replaceNodeText.find = "some";
replaceNodeText.replace = "my";
$("#notice").contents().each(replaceNodeText);
jsfiddle 上的演示