16

正如在堆栈上的许多问题中所讨论的那样 - IE 8 不会接受.trim(),但 jQuery 框架会处理这些问题。

我不知道如何翻译我的函数以使用该版本的修剪(我以为我已经在使用 jQuery),有人可以建议吗?这是我的代码:

$('input').val(function(index, val){
    return val.replace('Please Select', '').trim();
});

这旨在将字符串替换为空。

我试过了:

$('input').val(function(index, val){
    return val.replace('Please Select', '')$.trim();
});

但这不好。

4

3 回答 3

26
$.trim(val.replace('Please Select', ''))

http://api.jquery.com/jQuery.trim/

于 2012-12-03T10:21:58.733 回答
7

IE8 没有原生trim方法,一般我只是扩充原型:

if (!String.prototype.trim)
{
    String.prototype.trim = function()
    {
        return this.replace(/^\s+|\s+$/g,'');
    };
}

这是修剪字符串的最短正则表达式,但我听说它.replace(/^\s\s*/,'').replace(/\s*\s$/,'')(略微)更快......选择是你的

如果你真的想为此使用 jQuery,当然,你必须让目标字符串成为被调用方法的上下文($.trim$=== jQuery 对象上调用方法),所以让 String 成为 jQ 对象:

$('  foo bar  ').trim();//returns "foo bar"
//compared to augmented prototype:
'   foo bar  '.trim();//returns "foo bar"

增强原型的好处是您没有创建新 jQuery 对象的额外开销,而使用原型方法依赖于 JS 将字符串包装在本机 String 对象中并将该方法应用于该对象。基本上,它是相同的操作,但它应该稍微高效一些,因为 jQuery 对传递给 jQuery 构造函数 ( $())的任何字符串进行了一堆检查

于 2012-12-03T10:25:48.870 回答
4

尝试这个:

$.trim(val.replace('Please Select', ''));

这是文档中的Trim()条目。

于 2012-12-03T10:23:53.993 回答