jQuery – 在加载正文后查找并替换文本

关于用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”后显示。

这是我必须忍受的限制吗?

您可以尝试将事件附加到ajaxStop事件以及加载时:

 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); 

像这样从$(document).ready()回调中调用你的函数

 $(document).ready(function() { replace_stuff(); } ); 

以下function对我来说非常适合:

 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);