我正在尝试创建一种快速/肮脏的方式来使用javascript为html中的pre/code标签添加一些语法突出显示。
我遇到的问题是,如果我编辑 text() 或 html(),我会得到转义的内容。也就是说,添加的标签呈现为 pre/code,或者我得到一堆 eascape 字符。
考虑以下 html:
<pre>
<code class="target">
public interface __iIFoo { }
public class __tBar : __iIFoo { }
var list = new List__/__iIFoo\__();
</code>
</pre>
这里的目标是将出现的 替换为__iIFoo
:
<span class="interface">IFoo</span>
这样就可以用css突出显示。当然,当它被渲染时,我不想看到实际的 SPAN 标签。
这是我尝试过的:
$(function(){
var iPatt = /__i\w+/g
$.each($(".target").text().match(iPatt), function(i,match){
var replace = '<span class="interface">'+match.substring(3)+'</span>';
$(".target").text(function(){
return $(this).text().replace(match, replace);
});
});
});
这可行,但是,我添加的跨度标签显示在呈现的内容中,例如它们就像所有其他预代码一样。我不想看到它!