1

id 属性に基づいた作業スクリプトがありました。私は多くの問題を抱えているので、jQuery で class 属性を使用することにしました。しかし、次のスクリプトではうまくいきません (私はスクリプトが苦手です :( )

あなたの専門家が私にもっと良い方法を提案してくれるなら、それは素晴らしいことです。記号に置き換える単語が 300 以上あります (約 200 ページ)。

どうもありがとう。

HTMLコード

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

 <input type="submit" name="replace" id="replace" value="Replace" />
 <div class="my_div">Default content</div>
 <div class="my_div">Default content 2</div>

Javaスクリプト

$('#replace').click(function() {
     var str=document.getElementByClassName("my_div").innerHTML;
     var n=str.replace("default","somesymbol");
     var n=str.replace("content","somesymbol");
     var n=str.replace("im","somesymbol");
     document.getElementByClassName("my_div").innerHTML=n;
    }
4

2 に答える 2

2

代わりに次のようなものを使用してください。

$('#replace').click(function() {
    $('.my_div').each(function() {
        var $this = $(this);
        var html = $this.html();

        $this.html(html.replace(/default|content|im/gi, 'somesymbol'));
    });
}​);​

getElementByClassNameこれは、反復する必要があるa を返します。getElementsByClassNameNodeList

また、置換でフォーマットを保持する必要がない場合 ( などfoo <b>bar</b>)、.text()代わりに を使用し.html()ます。

于 2012-10-27T22:05:36.437 に答える
0

関数を引数として使用する場合、 jQueryhtml()メソッドを使用すると、要素のコレクション全体がクラス名でループされ、自動的に既存の html にアクセスできるようになり、html 文字列を返す場合はそれが置き換えられます。

$('#replace').click(function() {
    $('.my_div').html(function( idx, oldHtml){
    /* if you need access to other properties or attributes of element -"this" or "$(this)" within this function*/
           return oldHtml.replace(/default|content|im/gi, 'somesymbol');
    });
});

参考:http ://api.jquery.com/html/

jQuery バージョン 1.4 で追加されたセクションへの API ページの参照

于 2012-10-27T22:32:49.153 に答える