0

我做了一个快速的小提琴(不起作用),有点说明我所拥有的。我有一组选择并且可以添加更多。现在,这些会根据对象数组动态填充。我想要做的是,如果使用一个选项,我的选择不会使用相同的选项。例如select-1,选项 1-2-3-5 as select-2,但是当用户选择一个选项时,该选项需要在其他选择以及动态创建的选项上消失。这些也应该是可逆的。感谢你的帮助。小提琴

4

1 回答 1

1

我使用选择器稍微简化了这段代码。

在这里你只需要一个事件,你可以在你的选择器(或另一个多重匹配选择器)中使用逗号来满足你想要的一切:

    $('#xAxis,#yAxis').on('change',function(){
        setControls();
        $('#main-controls select')
          .each(function()
          {
               $('#main-controls select')
                 .not($(this))
                 .find('option[value=' + $(this).val() +']')
                 .remove();
          });
    });

策略是设置控件,然后找到具有我们刚刚选择的任何其他控件。如果我们可以hide()选择,这会容易得多,但不幸的是,这不能跨浏览器工作;我们必须对remove()他们。

修改中setControls是仅将选项添加到尚未具有该选项的选择中。然后我们可以在我们想要将选择恢复到它们的原始选择时调用它(不会丢失当前选择)。

    function setControls(){
        $.each(series,function(k,v){
            $('#xAxis,#yAxis')
              .filter(':not(:has(option[value=' + k +']))')
              .append($('<option>')
              .attr({value: k})
              .text(v.name));
        });   
    }

http://jsfiddle.net/5YhpW/8/

于 2013-02-27T05:32:24.423 回答