Я работаю с тремя раскрывающимися меню, каждое из которых имеет три варианта. Вместе эти три выпадающих меню создают систему, которая может находиться в любом из двадцати семи состояний. Для каждого раскрывающегося списка есть вариант 1, вариант 2 и все (что является объединением вариантов 1 и 2).
В зависимости от того, в каком состоянии находятся эти три раскрывающихся меню, я хочу отображать или скрывать различные элементы div. Эти div имеют классы этой формы class="distribution-(select-1)-(select-2)-(select-3)"
Я пытаюсь найти СУХОЙ способ кодирования этого, не полагаясь на 27 различных условий.
Вот выпадающие меню:
<div style = "margin-top:1cm; font-size:125%">
<strong>Clickout Type </strong>
<select class = "clickouts" >
<option value = "all" selected="selected">All</option>
<option value = "clickouts" >Clickouts</option>
<option value = "preferred" >Preferred Clickouts</option>
</select>
<strong>Graph Type </strong>
<select class = "graph-type" >
<option value = "all" selected="selected">All</option>
<option value = "hist" >Histograms</option>
<option value = "percent" >Percent</option>
</select>
<strong>Roll-up Type </strong>
<select class = "roll-up" >
<option value = "all" selected="selected">All</option>
<option value = "aggregate" >Aggregate</option>
<option value = "granular" >Granular</option>
</select>
</div>
Вот несколько примеров классов div:
distribution-hist-clickouts-aggregate, distribution-percent-clickouts-aggregate, class="distribution-hist-clickouts-granular", distribution-percent-clickouts-granular
Вот запрос для первых семи состояний:
$('.clickouts, .graph-type, .roll-up').change(function(){
var graph_type = $('.graph-type').val();
var roll_up = $('.roll-up').val();
var clickouts = $('.clickouts').val();
if (graph_type == 'all' & roll_up == 'all' & clickouts == 'all'){
$('div[class*="distribution"]').css('display', 'block');
}
if (graph_type == 'all' & roll_up == 'all' & clickouts == 'clickouts'){
$('div[class*="clickout"]').css('display', 'block');
$('div[class*="preferred"]').css('display', 'none');
}
else if (graph_type == 'all' & roll_up == 'all' & clickouts == 'preferred'){
$('div[class*="clickout"]').css('display', 'none');
$('div[class*="preferred"]').css('display', 'block');
}
else if (graph_type == 'hist' & roll_up == 'all' & clickouts == 'all'){
$('div[class*="hist"]').css('display', 'block');
$('div[class*="percent"]').css('display', 'none');
}
else if (graph_type == 'percent' & roll_up == 'all' & clickouts == 'all'){
$('div[class*="hist"]').css('display', 'none');
$('div[class*="percent"]').css('display', 'block');
}
else if (graph_type == 'all' & roll_up == 'aggregate' & clickouts == 'all'){
$('div[class*="aggregate"]').css('display', 'block');
$('div[class*="granular"]').css('display', 'none');
}
else if (graph_type == 'all' & roll_up == 'granular' & clickouts == 'all'){
$('div[class*="aggregate"]').css('display', 'none');
$('div[class*="granular"]').css('display', 'block');
}
});