1

私は問題を抱えています。ここにjavascript/jqueryがあります

 getTextForDisplay: function() {

            var displayText = "Select...";
            var options = this.dataSource._data;

            var selectedOptions = $.filter(options, function(index){
                return this.selected;

            });

            if (selectedOptions.length == 1) {
              displayText = "length1";
            } 
            else if (selectedOptions.length > 1) {
                displayText = "Multiple...";
            } 
            return displayText;
        }
    });

これは、チェックボックスを持つ複数選択ドロップダウン ボックスに関するものです。options 変数は、viewmodel からデータを取得する監視可能な配列であるため、チェックボックスの 1 つだけが複数のチェックボックスが選択されている場合に「複数...」を表示するには、これは非常に簡単に思えますが、実行するとエラーが発生し続けます。エラーは c.replace is not a function であり、エラーは jquery.min.js ファイルにあります。.filter からインデックスを削除しても機能しませんが、エラーも発生しません。

4

3 に答える 3

4

jQuery はjQuery.filter()関数を定義しません (少なくとも、パブリック APIでは定義しません)。それ.filter()が定義するのは、jQueryコレクションのメソッドです。

おそらくjQuery.grep()あなたが探しているものですか?

var selectedOptions = $.grep(options, function (option, index) {
    return option.selected;
});
于 2012-08-29T20:58:14.033 に答える
3

$.filter()自分で作成したり、プラグインを使用したりしない限り、のようなものはありません。

正しい構文は次のとおりです。

options.filter(function (index) {
    ...
});

ドキュメントは次のとおりです。http://api.jquery.com/filter/

于 2012-08-29T20:55:47.680 に答える
0

jQuery.filterメソッドを適切に使用していませんが、必要なことを行う文書化されたメソッドがあります。文書化されていない方法ではなく、文書化された方法を使用する必要があります。

$.grep(options, function(){
    return this.selected;
});

これが機能するにoptionsは、 が配列のような構造である必要があります。

于 2012-08-29T21:05:16.347 に答える