当前,我正在使用jQuery字符串来试图定位网站整个主体中的特定单词并在其中添加类。因此,每当出现"耐克"一词时,例如,它会变成红色并将TM附加到其末端。
我一直在使用它,但它仅取代了内容中的作品的第一次出现,我无法弄清楚为什么它不替换所有内容。
这是示例:http://jsbin.com/ijufu3/21/
有什么想法?
尝试此/Nike/g
.replace 仅对第一次出现。要继续其搜索,您需要进行全局搜索。
$('p:contains(Nike)').each(function(){
$(this).html(
$(this).html().replace(/Nike/g,'<span class="fancy">Nike</span>')
);
});
我会建议以下内容:
$('body').html(
function(i,h){
return h.replace(/(Nike)/g,'<span class="nike tm">$1</span>');
});
与以下CSS结合:
.tm::after {
content: '™';
}
.nike {
color: red;
}
Js小提琴演示。
在您期望找到单词的任何元素中,选择器被修改为
鉴于您可能需要定位不实施::after
伪元素/CSS生成的内容的浏览器,则还有:
$('body').html(
function(i,h){
return h.replace(/(Nike)/g,'<span class="nike">$1™</span>');
});
Js小提琴演示。
省略添加tm
类并明确添加该字符的HTML字符串。
这些方法之所以起作用,是因为正则表达式允许使用 g
(我认为'global'?)标志,它替换了遇到的匹配的每个每个事件(括号中的字符串)。但是,因为您正在查看html
内容,所以这具有nike
的任何类名称本身的风险,因此请非常确保该字符串将不会在意外的地方出现(替换会导致问题)。