我从数据库中获得一些降价文本。我使用Showdown.js这种降价转换为HTML:字符串到DOM到字符串
var showdown = new Showdown.converter();
var str = showdown.makeHtml(myDatabaseString);
当有嵌入在降价中的代码,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
循环中所做的更改?
你可能会在这里找到我的答案有关。 http://stackoverflow.com/questions/1878118/manipulating-the-data-from-ajax-success-functiondata/1878227#1878227 – jpsimons