如何从我的代码中删除prettyprint类

时间:2013-03-19 02:17:58

标签: jquery pretty-print

我有一个jquery变量,它使用google的漂亮打印类来保存代码的样式化。

<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删除每个span元素,但这是一项繁琐的任务。有没有办法以更有成效的方式做到这一点。

2 个答案:

答案 0 :(得分:0)

你可以这样做:

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

似乎工作正常:

> $(x).filter('span').text()
"
  echo "$output";
    echo "$my_code";"

答案 1 :(得分: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");

工作演示:

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

请注意,代码未针对最佳性能进行优化,如果您的真实世界Prettyprint代码的渲染方式与此处的确切代码不同,则可以保存一些Regex分析并获得更好的性能。