В настоящее время я скрываю/скрываю определенные выпадающие списки, основанные на выборе пользователей. Для этого мне пришлось повторить много кода. Я не вижу более простого способа сделать это, но я не могу не чувствовать, что это очень раздуто для его потребностей.Более эффективный способ скрытия/отображения четырех элементов на основе выбора
DEMO http://jsfiddle.net/LstNS/40/
$('#NumOfchildren').change(function() {
var numOfChildren = $(this).val();
if (numOfChildren == 0 || numOfChildren == 'child5plus') {
$("#child1").hide();
$('select[name="child1"]>option:eq(0)').prop('selected', true);
$("#child2").hide();
$('select[name="child2"]>option:eq(0)').prop('selected', true);
$("#child3").hide();
$('select[name="child3"]>option:eq(0)').prop('selected', true);
$("#child4").hide();
$('select[name="child4"]>option:eq(0)').prop('selected', true);
if (numOfChildren != 'child5plus') {
$("#child5plus").hide();
} else {
$("#child5plus").show();
}
}
if (numOfChildren > 0) {
$("#child1").show();
$("#child2").hide();
$('select[name="child2"]>option:eq(0)').prop('selected', true);
$("#child3").hide();
$('select[name="child3"]>option:eq(0)').prop('selected', true);
$("#child4").hide();
$('select[name="child4"]>option:eq(0)').prop('selected', true);
$("#child5plus").hide();
}
if (numOfChildren > 1) {
$("#child1").show();
$("#child2").show();
$("#child3").hide();
$('select[name="child3"]>option:eq(0)').prop('selected', true);
$("#child4").hide();
$('select[name="child4"]>option:eq(0)').prop('selected', true);
$("#child5plus").hide();
}
if (numOfChildren > 2) {
$("#child1").show();
$("#child2").show();
$("#child3").show();
$("#child4").hide();
$('select[name="child4"]>option:eq(0)').prop('selected', true);
$("#child5plus").hide();
}
if (numOfChildren > 3) {
$("#child1").show();
$("#child2").show();
$("#child3").show();
$("#child4").show();
$("#child5plus").hide();
}
});
Создайте свои собственные функции полезности для общих блоков кода и использования селекторов, которые захватывают более одного объекта для выполнения той же операции над несколькими объектами. Вы правы, что никогда не следует копировать этот код много раз. – jfriend00
Посмотрите на http://knockoutjs.com/. Это эффективный способ делать то, что вы хотите ... – nhaa123
Добавляя к тому, что говорит @ jfriend00, используйте классы для группировки соответствующих элементов вместе, чтобы вы могли просто вызвать ваше шоу/скрыть. Кроме того, кажется, что вы можете * скрыть все * до вашего блока if, а затем показывать только соответствующие, основанные на ваших операциях if/then. –