我做了一个快速的小提琴(不起作用),这有点说明我拥有的东西。我有一组选择和添加更多的可能性。现在,这些基于对象数组动态填充。我想要做的是,如果使用一个选项,我的选择不使用相同的选项。例如,select-1
选项1-2-3-5为select-2
,但是当用户选择一个选项时,选项需要在其他选项上消失,以及动态创建的选项。这些也应该是可逆的。谢谢你的帮助。fiddle
答案 0 :(得分: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));
});
}