2010-12-15 16 views
5

私は、DOMに含まれるテキスト文字列 "Tony"を検索し、それをテキスト文字列 "Tiger"に置き換える解決策を見つけようとしています。テキストを検索してjQueryを使用して置換する方法

誰でもどのように洞察力やアイデアを持っているのですか?それを推測すると、それぞれのステートメントはreplace関数と組み合わされ、おそらく含まれていますか?

おかげ ジェイク

+2

詳細をご覧ください。あなたはDOMのどこにいても構いませんか?あなたがどこにいても、「Tony」のすべての出現を「Tiger」に置き換えたいですか? –

+0

あなたはそれのhtmlコンテナですか?またはそのまっすぐのすべてを置換する – kobe

+0

はい、私は "Tony"のすべての出現を "Tiger"と置き換えたいと思います。 – jrutter

答えて

18

あなたはそれがjQueryのを使用しています

$('body').children().each(function(){$(this).text($(this).text().replace('Tony','Tiger'))}); 

... body要素のすべての子を検索し、テキストを置き換えるためにこれを使用することができます。また、唯一のあなたはまた、正規表現を使用し、すべてのネストされた要素を取得します。このメソッドを使用することができます...

を要素と書式設定HTMLのなしのテキスト内容を変更する必要があります。

$('body').html($('body').html().replace(/Tony/gi,'tiger')); 
+0

'children()'はDOMを再帰的に検索しないため、これは機能しません。 –

+0

私のページでは動作しません:http://www.laithwaiteswine.com $( '。container')children()。each(function(){$(this).text() .replace( 'Laithwaites'、 'Tiger'))}); - すべてのDOMを削除しているか、またはそれを壊しています。 – jrutter

+1

@jrutter:あなたのコードを見ずになぜあなたに起こっているのか分かりません。しかし、私は、RegExpのアプローチを使用して、私の解決策を変えました---> $( 'body').html($( 'body').html()。replace(/ Tony/gi、 'tiger') ); – exoboy

5

ページ広い、あなたはこのようなものを使用することができます

var $body = $('body'); 
var html = $body.html(); 
var newHtml = html.replace('Tony', 'Tiger'); 
$body.html(newHtml); 

それとも、あなたはより具体的なコンテナを持っている場合、その子コンテナを選択し、同じことを行うためにはjQueryを使用します。

いずれにせよ、それはショットガンアプローチの一種です。これは、可視のtext属性とhtml要素属性の両方の文字列を変更します。特定の場所で文字列を無視する必要がある場合は、より詳細なアプローチが必要な場合があります。

+0

これは動作しません、ページ全体がリロードされます。 – jrutter

3

はそれが可能ですこれをサーバー側のソリューションと組み合わせることはできますか? <span class="replaceme">texttoreplace</span>のような特別なクラスを使用して、単語サーバー側のすべての現象をラップすることができます。

結果のクラスでjavascript replaceを実行するだけで処理が速くなります。

+1

+1は、DOMでテキストを検索するよりはるかに優れています。 –

+1

これが可能であれば、彼はなぜサーバー側の文字列を置き換えて始めませんでしたか?不要なDOM要素を追加するのは余計なようです – ximi

関連する問題