2013-03-19 54 views
1

我有一个jquery变量,其中包含html代码和谷歌的漂亮打印类风格化代码。如何从我的代码中删除prettyprint类

<span class="pln"> 
    echo </span> 
    <span class="str">"$output"</span> 
<span class="pun">;</span> 
<span class="pln"> 
    echo </span> 
<span class="str">"$my_code"</span> 
<span class="pun">;</span> 

我想删除那些漂亮的类。输出应该看起来像这样

echo $output; 
echo $my_code; 

我也希望保留那些换行符和代码格式。

我试图删除使用jquery的每个跨度元素,但它的一个单调乏味的任务。有没有办法以更有效的方式来做到这一点。

+0

在您的代码示例中,为什么'$ output'和'$ my_code'看起来像变量(显示在您的预期结果中),但似乎被视为在相纸中的字符串字面值? (从他们周围的引号和类名“str”设置为他们的“span”) – Meligy 2013-03-19 08:02:55

回答

0

这里是一个可能的解决方案,假设所有的代码与特定阶级一个div里面,并且您想要替换内容,当然您可以轻松更改这些方面:

// change to fit your case 
var parent = $('.your-own-class'); 

var html = parent.html(); 
html = html 
    .replace(/(\r\n|\n|\r)/g,'') 
    .replace(/(\s\s+?)/gm, '') 
    .replace(/(\s+?\<+?)/gm, '<'); 

var tempElement = $("<pre />").html(html); 
tempElement.find(".pln:not(:first)").prepend("\n"); 
var text = tempElement.text(); 

// change to fit your case 
var output = parent; 

output.text(text).css("white-space", "pre"); 

Wo rking演示:

http://jsfiddle.net/Meligy/Ym2M8/

请注意代码不优化实现最佳性能,如果你的真实世界prettyprint代码是从你这里有确切的代码不同的渲染,你可以节省一些正则表达式解析并获得更好的性能。

0

你可以做这样的事情:

var text = $(x).filter('span').text(); 

这似乎只是很好地工作:

> $(x).filter('span').text() 
" 
    echo "$output"; 
    echo "$my_code";" 
相关问题