我在查找和替换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)
答案 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,然后在for
和filter
循环后,替换dom中的html。