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を使用したい場合は、ターゲット文字列を呼び出されたメソッドのコンテキストにする必要があるため( === jQueryオブジェクト$.trimでメソッドを呼び出す$)、文字列を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 に答える