5 回答
你可以这样做:
$("p").each(function() {
$(this).html($(this).html().replace(/contracting/g, "<strong>contracting</strong>"));
});
您必须让要替换的内容被<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,检查元素)才能看到强标签在那里。
这个怎么样?
var yourElement = $("#your-element-selector");
yourElement.html(yourElement.html().replace("yourword", "<strong>yourword</strong>"));
我写了一个小插件来做到这一点,但是它目前有一个错误,阻止它在同一个元素上多次有效地使用而不重置它的内容。这是一个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);
与 .html() 方法相比,使用此方法的好处是它不会触及可能在标签中找到的类名或 id 或表单输入的值。您可以通过替换为来影响整个#content
页面body
。
更新
此外,"contracting"
您可以传入正则表达式,而不是 ,例如/contracting/ig
(function(){
$("p").each(function() {
var self = $(this);
self.html(self.html().replace(/contracting/gi, "<strong>$&</strong>"));
})
})()
;