【问题标题】:jQuery trim doesn't remove  ?jQuery 修剪不会删除?
【发布时间】:2011-09-14 15:19:30
【问题描述】:

如何修剪字符串中的所有空格,即使它们是由不间断空格引起的 ( )

例如:

var foo = $.trim($('<p>&nbsp;foo&nbsp;</p>').text());

foo 的值是" foo " 而不是"foo"

更新 所以,问题不在于 jQuery 的修剪功能。它工作得很好。问题是 MSAjax 的修剪功能。 jQuery 正确地使用了函数检测,如果它们不存在,则使用它的实现。

不幸的是,MSAJax 的 trim 实现并没有去除 char 160(非中断空间)。但是,jQuery 正则表达式修剪确实如此,因为它意识到 IE 不包含 \s 中的 char 160。

为什么愚蠢的浏览器问题总是最终成为 M$ 如何实现某些东西的问题???

【问题讨论】:

标签: jquery whitespace trim


【解决方案1】:

所以,问题不在于 jQuery 的修剪功能。它工作得很好。问题是 MSAjax 的修剪功能。 jQuery 正确地使用了函数检测,如果它们不存在,则使用它的实现。

不幸的是,MSAJax 的 trim 实现并没有去除 char 160(非中断空间)。但是,jQuery 正则表达式修剪确实如此,因为它意识到 IE 不包含 \s 中的 char 160。

为什么愚蠢的浏览器问题总是最终成为 M$ 实现某些东西的问题???

【讨论】:

  • 有没有办法绕过 M$ 实现并强制 jQuery 的修剪?
【解决方案2】:

你确定吗?我刚刚尝试了您的 sn-p 的稍微修改版本:

var foo = $.trim($('<p>&nbsp;foo&nbsp;</p>').text());
alert('#' + foo + '#');

'foo' 的两边都没有空格。 http://jsfiddle.net/Ux7Wc/

这是在 Firefox 5 中使用 jQuery 1.6.2。

【讨论】:

  • 我不太确定了......它在代码中不起作用,我正在查看调试器中的值,这似乎正在发生。但在 jsfiddle 我无法复制问题
  • 问题是 IE 原生修剪(如果存在,jquery 使用哪个)不会去除 char 160,这也是 nbsp 转换的内容
  • 更正,不是IE自带的trim,而是MSAjax的trim函数
【解决方案3】:

这是 JQuery 1.4 之前的错误。请升级。

http://bugs.jquery.com/ticket/4980

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-08
    • 2011-01-07
    • 1970-01-01
    • 2011-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多