我正在寻找和替换文字。
我遇到的唯一问题是找到一个文本字符串,它没有附加到带有ID的元素。否则,这很容易。
我正在尝试这样的事情:
$("*").each(function () {
$(this).html(this.html().replace('Original Text','New Text'));
});
工作不太好。
有没有人遇到过这个?
此外,如果我要查找和替换多个单词或短语,这会如何影响用户浏览器的速度/处理能力?这是记忆力吗?
答案 0 :(得分:20)
$("*").contents().each(function() {
if(this.nodeType == 3)
this.nodeValue = this.nodeValue.replace("old", "new");
});
答案 1 :(得分:6)
Takpar,您的代码也适用。它似乎阻止了其他一些工作,但只有我动态拉动的项目。例如,当我使用.ajax()
时。不知道为什么,但这就是我遇到的原因。我会测试更多。
在相关主题上,Gumbo的代码有效:
$("*").each(function () {
if ($(this).children().length == 0) {
$(this).text($(this).text().replace('Subject:','Name:'));
}
});
我遇到的唯一问题是替换页面加载后加载的文本。
我确实有一些javascript函数正在显示来自服务器的数据,但只有在页面加载了所有元素之后才会显示。例如,用户从下拉列表中选择一个值,该值启动事件以从数据库加载产品列表。
我格式化了一些像这样的产品:
Granny Smith Apples
Price: x.xx per pound
Nutritional facts....
我只想找到替换“Price:”这个词,并可能将其替换为“Cost:”。
但正如我所提到的,该数据尚未加载。
我必须忍受限制吗?
答案 2 :(得分:4)
为什么不简单地使用:
$('body').html($('body').html().replace('Original Text','New Text'));
答案 3 :(得分:1)
您需要:contains()
选择器。 http://api.jquery.com/contains-selector/
$("*:contains('Original Text')").each(...);
答案 4 :(得分:0)
$("*").each(function () {
if ($(this).children().length == 0){
$(this).html($(this).html().replace(/Old String/g, "New String"));
}});