1

これはばかげた質問かもしれませんが、私は解決策を見つけることができないようです...

文字列が。であるかどうかを判断するために、 isNullOrWhiteSpace拡張子(.NETの拡張子と同じ名前)を作成したかっただけです'', '0', 0, undefined, null。クレイジーなことは何もありません。

現在、一般的なjQuery拡張機能を使用して実行すると、渡されるjQueryオブジェクトを常に探しているようです。しかし、私の拡張機能では、単純な文字列で機能する必要がありますが、私が行う。

$.fn.isNullOrWhiteSpace = function () {
    if (['', '0', 0, undefined, null].indexOf($.trim(this)) > -1) {
        return false;
    }
    return true;
};

'testing'.isNullOrWhiteSpace(); // doesn't work
// Uncaught TypeError: Object has no method 'isNullOrWhiteSpace'

私はここで何が欠けていますか?

-以下の回答から、単純に次のようになります。

$.isNullOrWhiteSpace、この$.fn.部分は、通常の拡張機能ではなく、jQuery-Object拡張機能になります(たとえば$.isArray()$.trim()(私自身の質問で使用しています...ため息をつく))

4

4 に答える 4

3

これをjQueryにフックする必要があり、名前空間の経済性を超える理由が実際にはない場合は、次のようにします。

$.nullOrWhitespace = function(s) {
  return !s || !(s.replace(/\s*/, '')); // or something like this; just an example
};

それからそれを

if ( $.nullOrWhitespace( yourString ) ) {
  ... whatever ...
}
于 2012-09-13T14:13:17.940 に答える
1

試すString.prototype.isNullOrWhiteSpace = function() {...

于 2012-09-13T14:12:21.137 に答える
1

私の知る限り、$.fn.isNullOrWhiteSpacejQuery を拡張します。

jQuery を拡張する場合は、おそらく jQuery オブジェクトでメソッドを呼び出す必要があります。

'testing'文字列ですが$('testing')、jQuery オブジェクトになります。

これはうまくいくようです:

$.fn.isNullOrWhiteSpace = function () {
    if (['', '0', 0, undefined, null].indexOf($.trim(this.selector)) > -1) {
        return false;
    }
    return true;
};

alert($('').isNullOrWhiteSpace());
alert($('testing').isNullOrWhiteSpace());

デモ

于 2012-09-13T14:14:02.627 に答える
1

$.fnデフォルトでは、コンテキストをthis一致した要素の配列に設定します(セレクターで使用した場合)。この場合、明らかに必要ありません。

$.isNullOrWhiteSpace = function (str) {        
     return $.inArray($.trim(str), ['', '0', 0, undefined, null]) > -1;
};

これは、他のほとんどのユーティリティ メソッドが行うことです。例: $.inArray$.trim既に使用したように! :)

于 2012-09-13T14:15:10.437 に答える