我試圖創建一個快速/髒方法來爲使用javascript的html中的pre/code標記添加一些語法高亮顯示。將實際的HTML元素添加到PRE/CODE內容
我遇到的問題是,如果我編輯文本()或HTML(),我會得到逃脫的內容。也就是說,添加的標籤呈現爲前/代碼,或者我得到了一堆的簡易字符。
考慮下面的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);
});
});
});
這工作,但跨度標籤,我將在呈現的內容顯示如它們就像所有其他的預編碼一樣。我不想看到它!
更改html而不是文本。 – canon
如果使用'html()'而不是'text()',那麼我最終會在轉義的內容中出現轉義字符,如< span class =「interface」>。我想要在pre元素中添加實際的DOM元素。 – Didaxis
不,'text()'可以逃脫它......你已經倒過來了。 – canon