2012-02-16 73 views
1

我正在主持一個帶有動態生成數據的表頭的JSP應用程序(我認爲它叫做Jasper Reports?),我無法訪問輸出的任何模板文件。我用一個小小的JQuery foo獲得了很不錯的東西。JQuery修剪只有領先的白色空間?

但我仍然有一個問題,似乎是白色的空間,在頭內的一些span標籤TD>跨越:

<td><span> My Heading</span></td> 

注意單詞「我」之前的空白。

我發現this nifty bit of code修剪白色空間,但問題是它需要所有的空白空間。

var pane = $('span'); 
pane.val($.trim(pane.val()).replace(/\s*[\r\n]+\s*/g, '\n') 
    .replace(/(<[^\/][^>]*>)\s*/g, '$1') 
    .replace(/\s*(<\/[^>]+>)/g, '$1')); 

所以現在使用此代碼,它最終爲:

<td><span>MyHeading</span></td> 

理想我想修改它,只是空白的第一位被刪除,但無後。

+0

'只是白色space'的第一位,你的意思僅僅是第一空間留給其他完好? – Cheery 2012-02-16 00:21:57

+0

很好,是的,只是'' – 2012-02-16 00:37:30

+0

之後的第一個空白區域試試這個'pane.text(pane.text()。replace(/^\ s /,''));' – Cheery 2012-02-16 00:40:42

回答

4

使用.text()得到的字符串值。

var pane = $('span'); 
pane.html($.trim(pane.text())); 

http://jsfiddle.net/gaboesquivel/cHevR/

編輯: ,因爲它覆蓋文本,如果它有超過1個跨度文檔中

您需要遍歷數組上面的代碼將無法正常工作跨越

//array of all the spans that are children of a td element 
var spansArray = $('td > span'); 
//iterate the array 
spansArray.each(function() { 
    var $this = $(this); 
    $this.html($.trim($this.text())); 
});​ 

http://jsfiddle.net/gaboesquivel/cHevR/2/

+0

你在小提琴中的代碼是不同於這裏,我應該使用? – 2012-02-16 00:40:10

+0

我在這裏發佈的文件會影響文檔上的所有跨度,小提琴上的文件只會影響類「changeMe」的跨度,因爲您無法訪問html,所以您必須選擇所有跨度'$(' span')',除非你找到一種方法來選擇你想改變的特定集合。 '$('#myModuleId span')'例如@see [JQuery Selectors](http://api.jquery.com/category/selectors/) – 2012-02-16 00:48:50

+0

嘗試'$('td> span')'=子跨度所有TD元素 – 2012-02-16 01:17:57

2

試試這個:

.replace(/^\s+/g, ""); 

這應該在字符串的開頭修剪任何空白。或者,您可以使用稍微不同的表達式修剪尾隨的空白。在這裏看到:

http://www.toptip.ca/2010/02/javascript-trim-leading-or-trailing.html

這裏的例子,所以你可以看到它是如何工作的: http://jsfiddle.net/CkMPH/

+0

謝謝,這似乎很好但我將如何只瞄準我的具體元素,即'​​ ...'? – 2012-02-16 00:30:05

+0

我不認爲這會起作用,因爲從來沒有相同的文本字符串,對不起,我應該說清楚。 – 2012-02-16 00:39:41