2012-12-03 5 views
16

スタックの多くの質問で議論されているように - IE 8は受け入れませんが、.trim()ですが、jQueryフレームワークがそれを処理します。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(); 
}); 
をそれは駄目でした。

答えて

26
+1

おかげで、それは簡単な何かをしなければならなかったおかげで-knewドキュメントへのリンク用です私はそれが許せば私は受け入れるだろう。 – Gideon

4

このお試しください:

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

ここでドキュメントのTrim()エントリがありますが。

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オブジェクト)、文字列をjQオブジェクトにします:

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

プロトタイプ・アプローチを使用すると、ネイティブのStringオブジェクト内の文字列をラップし、適用するJSに依存しているのに対し、拡張プロトタイプの利点は、あなたが新しいjQueryオブジェクトを作成するための追加のオーバーヘッドを持っていないということですその方法。 jQueryのjQueryのコンストラクタに渡された任意の文字列に小切手の束をしているため、基本的に、それは同じ操作だが、それはわずかに、より効率的でなければなりません($()