1

登録商標記号「®」が多用されているサイトがあります。この記号は、周囲のテキストと同じサイズで表示されます。小さく上付き文字で表示する必要があるため、jQuery を使用してページ上の「®」のすべてのインスタンスを検索し、「 」に置き換えています<span class="reg-mark">®</span>。このようにして、そのキャラクターの表示をスタイルできます。

検索と置換に次のコードを使用しています。

<script type="text/javascript" charset="utf-8">
    $(document).ready(function() {
        var strNewString = $('body').html().replace(/®/g,'<span class=\"reg-mark\">®</span>');
        $('body').html(strNewString);
    });
</script>

これにより、「®」のすべてのインスタンスが正常に置き換えられるため、希望どおりにスタイルを設定できます。

ただし、タグの「alt」属性の「®」のインスタンスも置き換えるため、画像の表示が崩れます。

属性値をスキップしながら、この検索と置換を実行する方法はありますか?

ありがとう、PJ

4

4 に答える 4

4
$('div, p, a, h1, h2, h3').filter(":contains('®')").each(function(){
    $(this).html($(this).html().replace('®', '<span class="reg-mark">®</span>'));
});

デモ

于 2012-05-04T20:20:09.690 に答える
1

® を鋭角括弧で囲む必要がある RegExp を使用します。

例: /(>[^<] )®([^<] <)/

次に、パート 1、新しい挿入、およびパート 3 を新しい一致に連結できます。

ただし、これは HTML ブラケットの間にあるオカレンスのみに一致します。あらゆる種類の属性でテキストを一致させたい場合、これは機能しません。

于 2012-05-04T20:25:51.003 に答える
0
<script type="text/javascript" charset="utf-8">
    $(document).ready(function() {
        var strNewString = $('body:not(img)').html().replace(/®/g,'<span class=\"reg-mark\">®</span>');
        $('body').html(strNewString);
    });
</script>

それで済むと思います。BODY 内のすべての "@" を検出する必要がありますが、IMG タグ内のすべてをスキップします。ALT タグにフォーカスできるセレクターもあります。例えば:

$('img[alt="@"]')
于 2012-05-06T02:47:43.460 に答える
0

JQuery not セレクターを使用します。<img>たとえば 、タグに「しない」ようにしてください。http://api.jquery.com/not-selector/

<script type="text/javascript" charset="utf-8">
    $(document).ready(function() {
        var strNewString = $('body:not(img)').html().replace(/®/g,'<span class=\"reg-mark\">®</span>');
        $('body').html(strNewString);
    });
</script>
于 2012-05-04T20:12:35.917 に答える