2

这在 FireFox 中运行良好: $("#listname").val().trim()

但是在野生动物园中它会出错: $("#listname").val().trim() 虽然这确实有效,但 $("#listname").val()

这是为什么?

4

2 回答 2

10

字符串没有内在trim函数。jQuery 确实定义$.trim了,但你可以像这样使用它:

$.trim($("#listname").val())

例如,您将字符串传递给它,而不是从 String 上的属性调用它。

正如其他回答者提到的那样,如果您愿意,可以将其添加到所有字符串中(尽管由于浏览器中的 Unicode 变幻莫测,我会利用 jQuery 的函数而不是自己的正则表达式):

if (!String.prototype.trim) {
    String.prototype.trim = (function() {
        function String_trim() {
            return jQuery.trim(this);
        }
        return String_trim;
    })();
}

我在那里使用了一个命名函数(我总是使用命名函数),但如果你不介意的话,你可以使用更少的代码行:

if (!String.prototype.trim) {
    String.prototype.trim = function() {
        return jQuery.trim(this);
    };
}
于 2010-05-23T06:50:14.200 回答
1

那是因为trim不是String在所有浏览器的类型上都定义了。它不是一个jQuery函数。您可以定义原型,它应该可以工作:

String.prototype.trim = function() {
    return this.replace(/^\s+|\s+$/g,"");
}
String.prototype.ltrim = function() {
    return this.replace(/^\s+/,"");
}
String.prototype.rtrim = function() {
    return this.replace(/\s+$/,"");
}
于 2010-05-23T06:48:14.260 回答