我收到了其他人的惊人帮助,关于用jquery查找和替换文本。
下面的代码将找到单词:“Subject:”并将其替换为“Name:”
$("*").each(function () {
if ($(this).children().length == 0) {
$(this).text($(this).text().replace('Subject:','Name:'));
}
});
这非常有效。
我遇到的唯一问题是替换页面加载后加载的文本。
我确实有一些javascript函数正在显示来自服务器的数据,但只有在页面加载了所有元素之后才会显示。例如,用户从下拉列表中选择一个值,该值启动事件以从数据库加载产品列表。
我格式化了一些像这样的产品:
格兰尼史密斯苹果 价格:x.xx每磅 营养成分......
我只想找到替换“Price:”这个词,并可能将其替换为“Cost:”。
但正如我所提到的,该数据尚未加载。并且仅在用户从下拉菜单中选择“Granny Smith Apples”后显示。
这是我必须忍受的限制吗?
答案 0 :(得分:13)
您可以尝试将事件附加到ajaxStop
event以及加载:
function replaceText() {
var jthis = $(this);
$("*").each(function() {
if(jthis.children().length==0) {
jthis.text(jthis.text().replace('Subject:', 'Name:'));
}
});
}
$(document).ready(replaceText);
$("html").ajaxStop(replaceText);
答案 1 :(得分:1)
从$(document).ready()
回调中调用您的函数
$(document).ready(function() { replace_stuff(); } );
答案 2 :(得分:0)
以下功能对我来说非常适合:
function replaceText(selector, text, newText, flags) {
var matcher = new RegExp(text, flags);
$(selector).each(function () {
var $this = $(this);
if (!$this.children().length)
$this.text($this.text().replace(matcher, newText));
});
}
这是一个用法示例:
function replaceAllText() {
replaceText('*', 'Subject:', 'Name:', 'igm');
}
$(document).ready(replaceAllText);
$('html').ajaxStop(replaceAllText);