jquery:删除基于属性数组的选择选项&其他选择框选择

时间:2012-05-05 01:10:17

标签: jquery jquery-selectors attributes jquery-selectbox

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

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

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

我已经对网站进行了搜索,发现了许多与我需要的代码相近的代码,但是我认为解析数组会将其抛弃?在这一点上,我不知道我是在过度复杂化还是过度简化。 (这基本上是尝试使用JQuery进行简单的多对多过滤器。)

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

1 个答案:

答案 0 :(得分: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
});​

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