2012-02-16 58 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