2

我正在尝试设置一组选择框来快速将相当大的数据集过滤成可用的块。而且我非常接近,但收到的解决方案与我想要的完全相反,无论我是使用 .not() 选择器(或将其取出),还是使用 .attr= (或 .attr!= )。

这是一个小提琴,所以你可以看到发生了什么:

http://jsfiddle.net/yD5cG/3/ (忽略一个事实,一旦你改变了顶级选择,底部选择框不会改变。我不需要担心这个)。

我搜索了该站点并发现了很多与我需要的代码很接近的代码,但是我认为解析数组会丢掉它吗?在这一点上,我无法判断我是否过于复杂或过于简单化。(这基本上是尝试使用 JQuery 进行简单的多对多过滤器)。

感谢任何事情,即使是最基本的想法......

4

1 回答 1

2

证明:http: //jsfiddle.net/iambriansreed/KBKEV/

var options = $('#selectbox2').html();
//store original options
$("#selectbox1").change(function() {
    var selected = this.value.split(',');
    // get selected value and make it an array
    $('#selectbox2').html(options);
    // reset the box to the original options
    $('#selectbox2 option').filter(function(){
        if(this.value.indexOf(',') == -1){
            // simple single values
            return $.inArray(this.value, selected) == -1;
        }else{  
            // check each value
            var values = this.value.split(',');
            for(i in values){
                if($.inArray(values[i], selected) > -1)
                    return false;            
            }
            return true;  
        }  
    }).remove();    
    // remove any options not in the array of selected values
});​

一个工作小提琴和一步一步的解释。另一个高质量的答案。

于 2012-05-05T01:47:31.940 回答