1

ブロックレベルのタグに html があります。次のように、一致する文をタグで囲む検索結果があります。

<p>
Some text. More text. <span class=match>Sentence with match.</span> More text.
</p>

私の目標は、一致しないテキストを非表示にする (削除しない) ことです。一致しないテキストとCSSスタイルをラップするのが最もうまくいくと思います:

<p>
<span class=nomatch>Some text. More text. </span><span class=match>Sentence with match.</span><span class=nomatch> More text.</span>
</p>

一種の逆ラップ。しかし、どうすればそれを行うことができますか?jquery または php を使用できますが、DOM セーフである必要があり、段落は任意のブロック要素である可能性があります。

したがって、次のようになります(これは構成されています):

$('.match').wrapOutside()

編集: 私は人々が正しいと思います。試合のタグ付けに使用するのと同じコードで「nomatch」タグ付けを行う必要があります。

4

2 に答える 2

0

これでうまくいくはずです。必要なセレクターに置き換え$('p')ます。

$('p').each(function() {
    $.each(this.childNodes, function(i, child) {
        if (child.nodeType == 3) { // text node
            $(child).before(
                $('<span class="nomatch"></span>').text(child.data)
            ).remove();
        }
    });
});
于 2013-10-05T19:01:40.643 に答える