Javascript(jQuery)… 筛选选择器中文本中的字符

Javascript (jQuery) … filter for a character within a text inside a selector?

本文关键字:中文 选择器 文本 字符 筛选 jQuery #160 Javascript      更新时间:2024-06-28

什么是最佳解决方案以及如何做到这一点。

我的网站上有这个…

<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>

对此有什么想法吗?当我这样做的时候,我不想在我的网站上降低很多性能。

提前感谢您,Matt

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)

试试这个:

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

小提琴示例

参见演示

$('p').each(function () {
  $(this).html($(this).text().replace(/'$/g, '<span>$</span>'));
});​

我会找到所有包含§符号的段落(不需要匹配每个段落),并包装该符号的每个出现

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