1

我有一个 jquery 变量,它保存带有 google 漂亮打印类的 html 代码,以对代码进行风格化。

<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 元素,但这是一项乏味的任务。有没有办法以更有效的方式做到这一点。

4

2 回答 2

0

你可以这样做:

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

它似乎工作得很好:

> $(x).filter('span').text()
"
  echo "$output";
    echo "$my_code";"
于 2013-03-19T02:19:27.927 回答
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/

请注意,代码未针对最佳性能进行优化,如果您在现实世界中的漂亮打印代码与您在此处的确切代码呈现不同,您可以保存一些正则表达式解析并获得更好的性能。

于 2013-03-19T03:13:56.830 回答