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

时间:2010-02-27 23:51:52

标签: jquery find replace

我收到了其他人的惊人帮助,关于用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”后显示。

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

3 个答案:

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