查找和替换文本,单词翻译

时间:2010-12-17 00:53:53

标签: javascript jquery

我在查找和替换PHP文件中的单词时遇到了一些问题,尤其是当有大量文件时。所以我想我会尝试使用javascript / jQuery。 我想创建表巫婆word_to_replace @ new_word这样做。 这是我的代码不起作用(并运行很长),过滤器似乎不起作用, 任何建议?

 (function($){
    var arr = [ 'photo-board.pl przyjazny portal fotograficzny@ ','Upload images from your@Upload zdjęć z ',
      'Total number of images@ Całkowita liczba zdjęć'];
    for(var i in arr)
    {
       var st_to_replace = arr[i].split('@')[0];
      // alert(st_to_replace);
      $('*').filter(function() {
        return $(this).text() == st_to_replace;
        }).html(arr[i].split('@')[1]);
    }
    }) (jQuery)

2 个答案:

答案 0 :(得分:1)

您正在获取每个页面元素的text()(其中包含子元素的文本)并在其中进行替换。这意味着,当您获得'body'元素时,您将替换所有文本,然后获取正文中的所有元素,并替换所有文本等。

这样的事情可能会更好:

(function($){
  var arr = [ 'photo-board.pl przyjazny portal fotograficzny@ ','Upload images from your@Upload zdjęć z ',
  'Total number of images@ Całkowita liczba zdjęć'];
  var bodyText = $('body').html();
  $.each(arr, function(i, v) {
    var words = v.split('@');
    var fromTxt = words[0], toTxt = words[1];
    bodyText = bodyText.replace(fromTxt, toTxt);
  });
  $('body').html(bodyText);
})(jQuery);

演示here

值得注意的是,由于这会破坏并重新创建整个正文内容,因此您将使用.data(...)删除事件处理程序和数据集。

答案 1 :(得分:0)

您的脚本的一个性能问题是每次迭代过滤器都会立即调用.html。这导致浏览器每次迭代都重新绘制元素。

您可以考虑编辑从dom分离的html,然后在forfilter循环后,替换dom中的html。