jQueryでいくつかのフレーズを翻訳しようとしています。このコードはほとんどうまく機能します:
changeText = function(text, newText){
var currentText = $('span.example').html();
$('span.example').html(currentText.replace(text,newText)); };
window.setTimeout(function(){changeText("TranslateMe", "Translation")}, 0000);
ただし、ajax によって生成された結果を待っている場合は、ほとんど役に立ちません。明確にするために、これは次の手順の検索スクリプトです。
[検索] をクリックすると、ページの一部が「通常どおり」読み込まれます。これらのテキスト文字列は問題なく変更できます。
その後、ajaxを介して動的にロードされた結果があり、divの「ブロック」が次々にロードされます。これらのフレーズは翻訳されません。
回避策は、すべてがロードされるまでしばらく待ってから、一部のパーツが機能するようにすることです。例:
window.setTimeout(function(){changeText("TranslateMe", "Translation")}, 20000);
ただし、ユーザーはしばらくの間、翻訳されていない文字列をそのように見るため、これは良い解決策ではありません。
したがって、表示される文字列を変更するソリューションを探しています。それを行う方法はありますか?
前もって感謝します!
編集:
チャーリーのアプローチを試す:
<script>
changeText = function(text, newText, $el) {
$el.html(function(i, currentText){
return currentText.replace(text, newText);
});
};
$(function(){
changeText(text, newText,$('span.example'));
});
$.ajax({
success:function(data){
var $changeEl=$(data).find('span.example');
changeText(text, newText,$changeEl);
var currentText = $('span.example').html();
$('span.example').html(currentText.replace(TranslateMe,Translation));
};
})
})
</script>