JQuery只修剪领先的空白区域?

时间:2012-02-16 00:09:12

标签: javascript jquery html

我正在发布一个JSP应用程序,它有一个包含动态生成数据的表头(我认为它叫做Jasper Reports?),我无法访问输出的任何模板文件。我用一些JQuery foo让事情看起来很不错。

但我仍有一个问题,标题中的某些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>

理想情况下,我想修改它,所以只删除了第一个空格,但之后没有删除。

3 个答案:

答案 0 :(得分:5)

试试这个:

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

那应该修剪字符串开头的任何空格。或者,您可以使用稍微不同的表达式修剪尾随空格。见这里:

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

以下是示例,以便您了解它的工作原理:  http://jsfiddle.net/CkMPH/

答案 1 :(得分:5)

使用.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/

答案 2 :(得分:1)

要删除的唯一第一个空间,您需要该代码

var pane = $('span');
pane.text(pane.text().replace(/^\s/, ''));

http://jsfiddle.net/P9jSL/