3

すべてのリンク内のすべての「新規」をスパンタグに置き換えたい。

そうですか?

$("a:contains('New')").each(function () {
                 $(this).html($(this).html().replace("New", "<span class='new'>New</span>"));
        });
4

3 に答える 3

7

正規表現:作業デモ http://jsfiddle.net/WujTJ/

g = / g修飾子は、「置換」のすべての発生を確認します

i-/ iは、正規表現の大文字と小文字を区別しません。

良い読み物:熱心な場合:http://www.regular-expressions.info/javascript.html

これを試してください:

この助けを願っています:)

Newまた、必要に応じて正規表現が変更されるため、含まれているかどうかを確認する必要がない場合もあります。

   // $("a:contains('New')").each(function () { // NOT sure if you need this
                     $(this).html($(this).html().replace(/New/g, "<span class='new'>New</span>"));
      //      });
于 2012-07-04T23:05:49.103 に答える
4

あなたのコードを試しましたか?ここ
で わかるように、うまく機能しています。唯一の問題は、修飾子を使用してすべてのオカレンスを置き換えるのを忘れたことです。g"New"

他の問題は、次のコードが同じことを行うことがわかるように、各ループが必要ないことです。
違いは、アイテム html を 2 回ループして取得する必要がないことです。

$("a:contains('New')").html(function(i, text) {
    return text.replace(/New/g, '<span class="new">New</span>');
});

デモ

于 2012-07-04T23:33:12.207 に答える
3

これも非常に簡単な方法です。

$("a:contains('New')").each(function() {
    $(this).html(function(index, text) {
        return text.replace('New', '<span class="new">New</span>');
    });
});

ここから: JavaScript/jQuery: 文字列の一部を置き換えますか?

編集:

Ricardo Lohmannの答えはより良く、 each() 関数を殺します:

$("a:contains('New')").html(function(i, text) {
    return text.replace(/New/g, '<span class="new">New</span>');
});
于 2012-07-04T23:14:03.077 に答える