0

jQuery の文字列の ">" を置き換えようとしていますが、HTML を保持する必要があるという問題があります。これが私が話していることの例です:

<div class="link">
    <a href="#">
        <span>Test ></span>
    </a>
    <a href="#">
        <span>Test 2 ></span>
    </a>
    <a href="#">
        <span>Test 3 ></span>
    </a>
</div>

このコードを使用する場合:

$(".link").each(function() {
    var text = $(this).text();
    text = text.replace(/>/g,'/');
    $(this).text(text);
});

<span>テキストに置き換えているため、HTML からタグを取り除きます。

このコードを使用する場合:

$(".link").each(function() {
    var html = $(this).html();
    html = html.replace(/>/g,'/');
    $(this).html(html);
});

技術的にも同様であるため、スパンタグとアンカータグの終了タグを置き換えます>>すべてのインスタンスではなく、テキストである を置き換える方法を見つけようとしています。

4

4 に答える 4

0

This simple function will, recursively, remove all > or &gt; from any text element it finds down the road:

function removeAllGt(element) {
    $(element).contents().each(function () {
        if (this.nodeType == 3) {
            this.nodeValue = this.nodeValue.replace(/>/g, '/');
        } else {
            removeAllGt(this);
        }
    });
}

Usage:

$(".link").each(function () {
    removeAllGt(this);
});

Demo fiddle here.

于 2013-05-25T01:59:08.423 に答える