2012-05-03 7 views
3

本文内で同じ名前のテキストを検索して置換しようとしていますが、部分的に動作していますが、テキストの一部が置換されていますが古いテキストのいくつかがまだ表示されていますが、何が起こっているかは十分にはわかりません。検索と置換同じ名前のテキストのすべてのインスタンス

$(document).ready(function() { 
    $('*').each(function(){ 
     if($(this).children().length == 0) 
      $(this).text($(this).text().replace("old text", "replace with new text")); 
     }); 
}); 

多くの助けを

おかげ

+0

「同じ名前の」 - 同じものは何ですか? – zerkms

+0

同じテキストをページ – Kevin

答えて

5

がそこから置き換え、その後、そのテキストを含む任意の要素を見つけるために、:contains擬似クラスセレクタを使用して認識されます。

$(":contains('old text')").each(function(){ 
    $(this).text($(this).text().replace('old text', 'new text')); 
}); 

対象とする要素のリストがわかっている場合は、最初にそれらの要素を見つけてから:containsを使用してフィルタリングします。

$('div, p, a, span').filter(":contains('old text')").each(function(){ 
    $(this).text($(this).text().replace('old text', 'new text')); 
}); 
+0

+1に送信しますが、何もしないので、最初の例を削除します。 –

+0

@Roko - ありがとうございますが、例は特にパフォーマンスの点で非常に異なります。後者の例では、ネイティブのDOM querySelectorAll()メソッドを利用して、指定された文字列の要素のうちのより小さなサブセットを検索できるようになります。これは速いが、必ずしも実用的ではない。 – jaredhoyt

+0

@ jaredhoyt助けてくれてありがとう、それは働いていますが、大文字と小文字が区別されます。大文字と小文字を区別しないようにする方法はありますか?私はjqueryの式をcontainsに追加しましたが、まだ何もありません – Kevin

関連する問題