我有一个 Podunk 公司的网页。但是每次 Podunk 出现在页面上(无论它在哪里)都需要显示为Podunk!
请注意,这是页面上的任何位置,因此它可能位于标题标签、列表标签、多个嵌套 DIV 等中。
解决此问题的最佳方法是什么?我认为 jQuery 是更好的解决方案(相对于 CSS),但我不知道该怎么做?有人可以在整个页面元素上提供这种替换的代码片段吗?
我有一个 Podunk 公司的网页。但是每次 Podunk 出现在页面上(无论它在哪里)都需要显示为Podunk!
请注意,这是页面上的任何位置,因此它可能位于标题标签、列表标签、多个嵌套 DIV 等中。
解决此问题的最佳方法是什么?我认为 jQuery 是更好的解决方案(相对于 CSS),但我不知道该怎么做?有人可以在整个页面元素上提供这种替换的代码片段吗?
我的原始答案不正确(如评论中所指出的:))我已编辑此答案以包含正确的解决方案。
var rgx = /Podunk/g;
$("body *")
.contents()
.filter(function() {
if (this.nodeType !== 3){
return false;
}
return true;
})
.each(function(){
var $this = $(this);
var txt = $this.text();
if (rgx.test(txt)){
$this.replaceWith("<span>" + txt.replace(rgx,"<span class='podunk'>Podunk</span>") + "</span>");
};
});
这样做的缺点是任何只有 Podunk 的元素都会获得额外的 span 元素。即,如果你有
<a>Podunk</a>
你最终得到
<a><span><span class="podunk">Podunk</span></span>.
我认为稍微考虑一下,这可以克服。
如果它需要以斜体显示,绝对最可靠的方法是使用<i>Podunk</i>
并尽最大努力确保所使用的字体系列具有斜体字体。
无论如何,这是一个被误导的目标,所以你不应该担心同事说i
标记不是“语义的”。但是您可能会考虑使用<i class=company>Podunk</i>
,只是为了更容易放弃斜体的这种使用,而不会放弃对斜体的合理使用,如果客户意识到他们的话。