jQuery 的 trim 函数在 IE7 中无法正常工作?

10
我正试图调用jQuery的text()函数,并通过trim()函数使其不再包含所有前后空格。在Firefox中似乎效果很好,然而在IE7中却无法移除最后一个空格。有什么想法吗?也许可以使用正则表达式解决问题吗?
4个回答

21

您很可能已经忘记了jQuery链式操作...

尝试这样做

$('#selector').trim($('#selector').text())

不要懒惰使用

$('#selector').text().trim();//这是错误的...

修改

或者像@Laserson简化得更好一样,使用$.trim($(selector).text());


如果我的选择不正确,那么这是否可以解释为什么在Firefox中可以工作但在IE中不能工作? - YourMomzThaBomb
也许您应该更新您的答案并提供脚本示例,这只是一个建议。至于您的IE7问题,您可以使用if语句和substr(-1,1)来检查最后一个字母是否为空格。 - Val
2
这对我很有帮助,我之前用的是 $(selector).text().trim(); 在火狐浏览器上可以运行,但在ie7上会报错 - 所以我改成了 $.trim($(selector).text()); 然后一切都很顺利 :) - totallyNotLizards

5
所以这是正在发生的事情的要点。我有一些文本在一个span元素中,在该文本之后,用户可以点击一个超链接/图像来将文本从所在行中移除(请参见下面的代码)。然而,在超链接的文本中,我在span元素文本之后放置了一个 ,以在span文本和“删除”图像之间添加一点填充。因此,即使我访问元素的文本并修剪$.trim($(this).parent().text());,它仍然会包括末尾的空格!一旦我删除了这个额外的空格,事情就正常了。不过,我仍然不知道为什么$.trim()不能解决它?!
<div>
  <span>
    <strong>SomeText</strong>
  </span>
  <a href="javascript:void(0);" onclick="removeMe();">&nbsp;
    <img src="delete.png" width="15" height="15" border="0" name="imgRemove" />
  </a>
</div>

3
你的用户名非常冒犯。 - Alex Gordon
它无法工作,因为$.trim只寻找实际的空格,而不包括编码的非断行空格&nbsp;。就.trim而言,它认为它只是另一个文本,就像HomeTom & jerry一样。希望这可以帮助您。 - Val

0

是的,我有一个想法。你调用text()函数的元素末尾的空格不在其中。这可能发生在IE中,因为它将空格与Firefox不同对待,并将其作为自己的元素处理,而Firefox则不会。这只是一个猜测,因为你的问题没有提供足够的信息。


1
这没有意义。这只是一个简单的字符串 - 空格的来源并不重要。 - SLaks
不,如果trim不能在字符串上工作,那就没有意义了,它是一个简单的正则表达式,应该可以工作。 - mkoryak
我认为一个文本返回的是字符串,而不是你所指的节点/元素,除非他使用了HTML而不是文本。哈哈,这个答案是无关紧要的。 - Val

0

jQuery在其trim方法中使用/^\s+|\s+/g-

任何尾随空格都必须在它返回之后添加。

这可能取决于您何时阅读它-尝试直接从修剪操作警报值。 如果读取正确,则空格是由您对字符串执行的任何操作添加的。

如果修剪确实带有尾随空格,请使用text.replace (/^\s+|\s+/g,'')。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接