2010-12-17 5 views
0

특히 PHP가 많이있을 때 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을 바꾸는 것이 좋습니다.

관련 문제