正如堆栈上的许多问题所讨论的那样 - IE 8不会接受.trim()
,但是jQuery框架会处理这个问题。
我不知道如何翻译我的函数来使用那个版本的trim(我以为我已经在使用jQuery),有人可以提供建议吗?这是我的代码:
$('input').val(function(index, val){
return val.replace('Please Select', '').trim();
});
这是为了替换没有任何内容的字符串。
我试过了:
$('input').val(function(index, val){
return val.replace('Please Select', '')$.trim();
});
但这并不好。
答案 0 :(得分:26)
$.trim(val.replace('Please Select', ''))
答案 1 :(得分: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对象的开销,而使用prototype-approach依赖于JS将字符串包装在本机String对象中并将方法应用于。基本上,它是相同的操作,但它应该稍微更高效,因为jQuery对传递给jQuery构造函数的任何字符串($()
)进行了大量检查
答案 2 :(得分:4)