2013-03-19 58 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";"