Javascript 字符串到DOM到字符串

Javascript 字符串到DOM到字符串,javascript,jquery,string,dom,Javascript,Jquery,String,Dom,我从数据库中得到一些降价文本。我正在使用shodown.js将此标记转换为HTML: var showdown = new Showdown.converter(); var str = showdown.makeHtml(myDatabaseString); 当标记中嵌入了代码时,shodown.js会再次将其很好地包装到文本中 <p>Some text bla</p><pre><code>Some code</pre></c

我从数据库中得到一些降价文本。我正在使用shodown.js将此标记转换为HTML:

var showdown = new Showdown.converter();
var str = showdown.makeHtml(myDatabaseString);
当标记中嵌入了代码时,shodown.js会再次将其很好地包装到
文本中

<p>Some text bla</p><pre><code>Some code</pre></code><p>Text again</p>
现在,我想通过使用语法突出显示代码段,使事情变得更漂亮。重要的是,最后我得到了一个字符串,其中包含了它以前拥有的所有内容,以及用于格式化的额外HTML

我的方法是JQuery操作DOM的能力:


我走对了吗?如何将所做的更改保留在
循环中?

这是因为您正在创建一个与
str
变量无关的jQuery对象,所以应该使用创建的jQuery对象。实际上,您正在修改创建的jQuery对象的元素,并返回原始/未更改的
str
变量。我建议:

//创建包装器元素
//并使用str变量设置其内容
var$wrapper=$('').html(str);
//修改子代前置元素
$wrapper.find('pre')。每个(函数(){
//实现逻辑
});
//获取已创建包装器元素的已修改HTML内容
str=$wrapper.html();

你是当今的英雄。你可以在这里找到我的答案。
$(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
// Creating a wrapper element 
// and setting it's content by using str variable
var $wrapper = $('<div/>').html(str);

// Modifying descendant pre elements
$wrapper.find('pre').each(function(){
   // implementing the logic
});

// Getting modified HTML content of the created wrapper element
str = $wrapper.html();