我有一个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元素,但这是一项繁琐的任务。有没有办法以更有成效的方式做到这一点。
答案 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分析并获得更好的性能。