2010-12-17 70 views
0

我在PHP文件中查找和替換單詞時遇到了一些問題,特別是在有大量文字時。所以我想我會嘗試使用JavaScript/jQuery。 我想創建表女巫word_to_replace @ new_word這樣做。 這是我的代碼,它不工作(和運行很長),過濾器似乎不工作, 任何建議?查找並替換文本,單詞翻譯

(function($){ 
    var arr = [ 'photo-board.pl przyjazny portal [email protected] ','Upload images from [email protected] zdjęć z ', 
     'Total number of [email protected] 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) 

回答

1

您將獲得每個頁面元素(其中將包括子元素的文本)的text()並替換其中。這意味着,當你的「身體」元素替換所有的文本,然後你體內的所有元素,並更換所有文字等

像這樣的東西可能會更好地工作:

(function($){ 
    var arr = [ 'photo-board.pl przyjazny portal [email protected] ','Upload images from [email protected] zdjęć z ', 
    'Total number of [email protected] 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(...)的事件處理程序和數據集。

0

腳本的一個性能問題是立即調用.html過濾器的每次迭代。這會導致瀏覽器在每次迭代中重新繪製元素。

您可能會考慮編輯從dom分離的html,然後在forfilter循環之後替換dom中的html。

相關問題