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;
        }
    });

所以这是关于具有复选框的多选下拉框,选项变量是一个可观察的数组,从视图模型中提取其数据,所以我想要做的是显示“length1”,如果只有一个复选框是如果选中了多个复选框,则选中并显示“多个...”,这看起来很简单,但是当我运行它时我不断收到错误消息。错误是 c.replace 不是函数,错误在 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 回答