为什么Safari不喜欢JQUERY中的.trim()?

时间:2010-05-23 06:45:07

标签: jquery firefox safari trim

这在FireFox中运行良好: $( “#LISTNAME”)。VAL()。修剪()

但在safari中它有错误:$(“#listname”)。val()。trim()虽然这确实有效,$(“#listname”)。val()

为什么?

2 个答案:

答案 0 :(得分:10)

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

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

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

正如另一个回答者提到的那样,如果你愿意的话,可以将它添加到所有字符串中(虽然我会利用jQuery的功能而不是自己的正则表达式,因为浏览器中的Unicode变幻莫测):

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

我在那里使用了一个命名函数(I always use named functions),但如果你没有打扰,你可以使用更少的代码行:

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

答案 1 :(得分:1)

这是因为trim未在所有浏览器中的String类型上定义。它不是jQuery函数。你可以define the prototype它应该有效:

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+$/,"");
}