JQuery查找并更改字符串的样式

时间:2012-12-08 18:57:27

标签: javascript jquery html css

我需要编写一个函数来搜索HTML页面中的所有内容以获取特定的字符串,如果找到它,则更改文本的颜色。

这可能吗?

由于

3 个答案:

答案 0 :(得分:8)

你可以这样做:

CSS:

.someclass {
    color: red;
}

Javascript:

$('p:contains('+yourstring+')', document.body).each(function(){
  $(this).html($(this).html().replace(
        new RegExp(yourstring, 'g'), '<span class=someclass>'+yourstring+'</span>'
  ));
}​);​

请注意,如果yourstring位于标记或属性中,则会出现问题。

Demonstration

在将处理程序附加到段落(或其中可能包含yourstring的元素,例如链接)之前,请小心运行此代码。

答案 1 :(得分:1)

dystroy的答案的问题是它会覆盖整个HTML,因此如果你在包含文本的节点中有任何处理程序,它们将被删除。

正确的解决方案是使用text ranges仅更新文本本身,而不是更新其周围的所有HTML。见Highlight text range using JavaScript

为了好玩,有一种内置方法window.find适用于FF and Chrome。虽然它不符合标准,但一次只能找到一个。就像ctrl + f。

window.find("anything");

答案 2 :(得分:0)

  

JQuery查找并更改字符串的样式&gt;&gt;仅复制粘贴并运行:)

 text-shadow