在元素中查找文本字符串并在其周围包裹一些span标记

Seb*_*Seb 37 string jquery text

我想在元素中找到一串文本,并围绕它包裹一些span标签.例如:

h2h2

我试过了:

<h2>We have cows on our farm</h2>
Run Code Online (Sandbox Code Playgroud)

但这只包含整个包含h2标签.

und*_*ned 74

$("h2:contains('cow')").html(function(_, html) {
   return html.replace(/(cow)/g, '<span class="smallcaps">$1</span>');
});
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/w5ze6/1/

  • 我问,因为我很感兴趣 - 我在哪里可以找到关于你正在使用的语法的一些文档?特别是`function(_,html)`. (2认同)
  • 像@``这样的@Evan` _`是用于在JavaScript中定义标识符的有效字符.它不是'null`.还有一个名为underscore的JavaScript库http://underscorejs.org/ (2认同)
  • 太棒了,谢谢.我学到了一些新东西. (2认同)
  • 请注意,如果您在元素内有一些包含 _cow_ 的标记,这将不起作用。像`&lt;div&gt;&lt;a href="cows"&gt;点击这里&lt;/a&gt;&lt;/div&gt;`。这将破坏该属性。 (2认同)

Jus*_*ell 13

另一种方法,按关键字拆分并加入更新后的html.

$("h2:contains('cow')").html(function(_, html) {
   return html.split('cow').join("<span class='smallcaps'>cow</span>");
});
Run Code Online (Sandbox Code Playgroud)

注意:我没有对此进行过测试,但我认为这会比替换更糟糕,但我想包括其他信息用于提供信息的目的

  • 我知道这已经过了好几年了,但我已经为这个答案创造了一个工作小提琴...... http://jsfiddle.net/v2nqu05o/ (4认同)