我正在发布一个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>
理想情况下,我想修改它,所以只删除了第一个空格,但之后没有删除。
答案 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()));
});
答案 2 :(得分:1)
要删除的唯一第一个空间,您需要该代码
var pane = $('span');
pane.text(pane.text().replace(/^\s/, ''));