我从数据库中得到一些降价文本。我正在使用 Showdown.js 将此降价转换为 HTML:
var showdown = new Showdown.converter();
var str = showdown.makeHtml(myDatabaseString);
当 markdown 中嵌入了代码时,Showdown.js 会将其很好地包装到<pre><code>
标签中,因此str
可能看起来像这样:
<p>Some text bla</p><pre><code>Some code</pre></code><p>Text again</p>
现在我想通过使用SyntaxHighlighter突出显示代码片段的语法来让事情变得更漂亮。重要的是,最后我会得到一个字符串,其中包含它之前拥有的所有内容,以及用于格式化的额外 HTML。
我的方法是 JQuery 操作 DOM 的能力:
$(str).each(function() {
// or can I select only pre within $(str) directly?
// everything I tried so far to do that failed miserably
if($(this).is('pre')) {
var code = $('code', $(this)).text();
// brush is my SyntaxHighlighter brush that I created earlier
$('code', $(this)).text(brush.getHtml(code));
// when I console.log($('code', $(this))) now, everything worked
// out perfectly
}
});
// but now I lost all my changes for some reason :-(
return str; // I need to return this as a string again
我走对了吗?如何将我所做的更改保留在.each
循环中?