2
4

5 回答 5

6

你可以这样做:

$("p").each(function() {
    $(this).html($(this).html().replace(/contracting/g, "<strong>contracting</strong>"));
});​

活生生的例子

于 2012-04-24T14:38:35.277 回答
1

您必须让要替换的内容被<span> <div>带有 ID 的东西包围,这样才能正常工作。

HTML:

<div id="content">Contracting</div>​

JS:

content=document.getElementById("content");

​content.innerHTML=content.innerHTML.replace(/contracting/gi,"<strong>$&</strong>");​​​​​​​​​​​

JSfiddle:http: //jsfiddle.net/jwTz8/

JSfiddle 工作,但字体对我来说没有改变,您可能需要检查元素(右键单击 Contracting,检查元素)才能看到强标签在那里。

于 2012-04-24T14:38:18.997 回答
0

这个怎么样?

var yourElement = $("#your-element-selector");

yourElement.html(yourElement.html().replace("yourword", "<strong>yourword</strong>"));
于 2012-04-24T14:38:52.290 回答
0

我写了一个小插件来做到这一点,但是它目前有一个错误,阻止它在同一个元素上多次有效地使用而不重置它的内容。这是一个jsfiddle:http: //jsfiddle.net/NFDqe/1/

$("#content").highlightText("contracting","bold",true);

bold在这种情况下,是一个类,它被添加到一个包含文本的跨度中font-weight: bold

https://github.com/tentonaxe/jQuery-highlightText

如果您发现另一个没有我的错误的插件可以做同样的事情,我不会感到惊讶。

更新

您还可以设置defaultTagName插件以strong获得强标签而不是跨度标签。

$.fn.highlightText.defaultTagName = "strong";
$("#content").highlightText("contracting",true);

http://jsfiddle.net/NFDqe/6/

与 .html() 方法相比,使用此方法的好处是它不会触及可能在标签中找到的类名或 id 或表单输入的值。您可以通过替换为来影响整个#content页面body

更新

此外,"contracting"您可以传入正则表达式,而不是 ,例如/contracting/ig

于 2012-04-24T15:04:00.840 回答
0
(function(){

$("p").each(function() {

var self = $(this);

self.html(self.html().replace(/contracting/gi, "<strong>$&</strong>"));

})

})()

;

于 2012-04-24T15:19:33.253 回答