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