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

AnA*_*ice 2 safari firefox jquery trim

这在FireFox中工作正常:$("#listname").val().trim()

但在safari中它出错:$("#listname").val().trim()虽然这确实有效,$("#listname").val()

这是为什么?

T.J*_*der 10

trim字符串没有内在功能.jQuery确实定义了$.trim,但你像这样使用它:

$.trim($("#listname").val())
Run Code Online (Sandbox Code Playgroud)

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

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

if (!String.prototype.trim) {
    String.prototype.trim = (function() {
        function String_trim() {
            return jQuery.trim(this);
        }
        return String_trim;
    })();
}
Run Code Online (Sandbox Code Playgroud)

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

if (!String.prototype.trim) {
    String.prototype.trim = function() {
        return jQuery.trim(this);
    };
}
Run Code Online (Sandbox Code Playgroud)