0

最善の解決策は何ですか、それをどのように行いますか。

私のサイトにこれがあります…</p>

<div class="desc">
   <p>
   Some text that is set via a CMS and is completely dynamic. 
   It contains sometimes a character like this § in the middle of the text.
   It could also contain another one §, you see!
   </p>
</div>

§このテキストを文字用にフィルタリングして、スパン内にラップするにはどうすればよいでしょうか。

<span class="symbol">§</span>

それについて何かアイデアはありますか?これを行うときに、自分のサイトのパフォーマンスを大幅に低下させたくありません。

よろしくお願いします、マット

4

4 に答える 4

1

findAndReplaceDOMTextこれを実行するための優れたライブラリであり、(機能が必要な場合)さらに多くのことを実行できます。

findAndReplaceDOMTextは、DOMノードで正規表現の一致を検索し、すべての一致(およびノー​​ド境界で区切られた一致の一部)を指定された要素でラップします。

Github:https
://github.com/padolsey/findAndReplaceDOMText デモ:http://padolsey.github.com/findAndReplaceDOMText/demo.html

正規表現を使用して文字列と照合し、複数のノードにまたがる文字列に対して自動的に機能します。

<p id="t">
   123 456 99<span>9 foo</span>
</p>

findAndReplaceDOMText(/9+/, document.getElementById('t'), 'em');

これにより、次のようになります。

<p id="t">
   123 456 <em>99</em><span><em>9</em> foo</span>
</p>

https://github.com/padolsey/findAndReplaceDOMText/blob/master/readme.mdの例)

于 2012-08-01T08:53:45.447 に答える
0

これを試して:

$(".desc p").each(function() {
    $(this).html($(this).text().replace(/§/g, "<span class=\"symbol\">§</span>"))
});

フィドルの例

于 2012-08-01T08:52:06.227 に答える
0

デモを見る

$('p').each(function () {
  $(this).html($(this).text().replace(/\$/g, '<span>$</span>'));
});​
于 2012-08-01T08:52:47.723 に答える
0

記号を含むすべての段落を見つけ§(すべての段落に一致する必要はありません)、その記号のすべての出現箇所をラップします

$(".desc p:contains('§')").each(function() {
   $(this).html($(this).text().replace(/§/g, '<span class="symbol">§</span>'));   
})
于 2012-08-01T08:55:39.220 に答える