0

私は CEWP (webpart) を使用しており、このコードをそこに入れています。しかし、このコードは<head>タグ内には入りません。このコードを<head>タグに挿入する必要があります。

<script src="http://code.jquery.com/jquery-latest.js"></script>

<script type="text/javascript">
$("*").each(function () { if ($(this).children().length == 0) { $(this).text($(this).text().replace('Respuesta','Responder')); } });
</script>

これどうやってするの?このコードは CEWP Web パーツでどのように機能しますか?

4

1 に答える 1

3

まず、<head>ドキュメントの準備ができたときに実行するように設定した場合、コードを に配置できます。

しかし、それでもうまくいきません。すべてのタグを繰り返し処理しています。を含め<html>、これが によって最初に選択され$('*')ます。

したがって、要素内のすべてのテキスト (つまり、ドキュメント テキスト全体) を読み取り<html>、文字列置換を実行してから、 html に書き戻しtext()ます。要素の以前のすべてのテキストと要素コンテンツを<html>単一の単純なテキスト文字列に置き換えます。その結果、ページ上の他のすべての要素が破壊されます。おっとっと。

あなたがしたいことは、すべてのテキストノードを見つけて、それに対して個別の文字列置換を行うことです:

$(document).ready(function() {
    $('*').each(function() {
        for (var i= this.childNodes.length; i-->0;) {
            var child= this.childNodes[i];
            if (child.nodeType===3) // TEXT_NODE
                child.data= child.data.replace(/Respuesta/g, 'Responder');
        }
    });
});

(ここでは、フォーム フィールドやその他の要素で、それらの内部のテキストを変更しても期待どおりにならない可能性のあるエッジ ケースがまだたくさんあることに注意してください。)

于 2010-04-30T21:15:39.987 に答える