Мне нужно показать/скрыть более 100 опций в раскрывающемся списке с одним выбором. Мой код до сих пор выглядит ниже. Однако это кажется хорошим для небольшого количества опций, но не для большого количества опций. Есть ли способ лучше?
$(document).ready(function() {
$("#colors").change(function(){
var selectedValue = $(this).val();
url = "http://domain.com";
if(selectedValue == "color1"){
$("table#color1").show();
$("table#color2").hide();
$("table#color3").hide();
$.get(url, {name: "color1"});
}
if(selectedValue == "color2"){
$("table#color1").hide();
$("table#color2").show();
$("table#color3").hide();
$.get(url, {name: "color2"});
}
if(selectedValue == "color3"){
$("table#color1").hide();
$("table#color2").hide();
$("table#color3").show();
$.get(url, {name: "color3"});
}
});
});
Дайте всем таблицам класс (например, class="colored-table"
) и выполните следующие действия:
$('table.colored-table').hide();
$('table#' + selectedValue).show();
// 'table#' + selectedValue : will become 'table#color1' if selectedValue equals 'color1' and so on
$.get(url, {name: selectedValue});
(изменение: забыли $.get)
Если у всех есть класс, называемый color
, вы можете сделать следующее:
$(document).ready(function() {
$("#colors").change(function(){
var selectedValue = $(this).val();
url = "http://domain.com";
$("table.color").hide();
$("table#"+selectedValue).show();
$.get(url, {name: selectedValue});
});
});
Попробуйте использовать селектор "не" jQuery (если в таблице нет атрибута id "color3"):
if(selectedValue == "color3"){
$("table").not('#color3').hide();
$("table#color3").show();
$.get(url, {name: "color3"});
}
Или вы можете просто скрыть все таблицы, а затем просто показать тот, который вам нужен:
if(selectedValue == "color3"){
$("table").hide();
$("table#color3").show();
$.get(url, {name: "color3"});
}