2015-04-09 6 views
2

Я хочу знать, есть ли у меня динамический способ комбинировать следующий код с коротким. У меня есть много if(). Is (: checked) {} ​​else {}, могу ли я сделать что-то вроде if (this) .is (: checked), я пытаюсь использовать .closest(), но не знаю, я знаю, как его реализовать, также думая использовать массив? Вы в любом случае? оценить.У вас есть лучший динамический способ сократить сложный код jquery?

if ($("#diet_se").is(':checked')) { 
 
\t \t  $('#diet_voting').fadeIn(); 
 
\t \t \t $('#label_s2').addClass("label_se_active"); 
 
\t \t \t 
 
\t \t \t jQuery("textarea[class*=expand1-99]").TextAreaExpander();//initialize the text expand 
 
     }else{ 
 
\t \t  $('#diet_voting').fadeOut(); 
 
\t \t \t $('#label_s2').removeClass("label_se_active");   \t \t 
 
     } 
 
     if ($("#exer_se").is(':checked')) { 
 
\t \t  $('#exer_voting').fadeIn(); 
 
\t \t \t $('#label_s3').addClass("label_se_active"); 
 
\t \t \t 
 
\t \t \t jQuery("textarea[class*=expand1-99]").TextAreaExpander();//initialize the text expand 
 
     }else{ 
 
\t \t  $('#exer_voting').fadeOut(); 
 
\t \t \t $('#label_s3').removeClass("label_se_active");   \t \t 
 
     } 
 
     if ($("#reme_se").is(':checked')) { 
 
\t \t  $('#reme_voting').fadeIn(); 
 
\t \t \t $('#label_s4').addClass("label_se_active"); 
 
\t \t \t 
 
\t \t \t jQuery("textarea[class*=expand1-99]").TextAreaExpander();//initialize the text expand 
 
     }else{ 
 
\t \t  $('#reme_voting').fadeOut(); 
 
\t \t \t $('#label_s4').removeClass("label_se_active");   \t \t 
 
     } 
 
     if ($("#medi_se").is(':checked')) { 
 
\t \t  $('#medi_voting').fadeIn(); 
 
\t \t \t $('#label_s5').addClass("label_se_active"); 
 
\t \t \t 
 
\t \t \t jQuery("textarea[class*=expand1-99]").TextAreaExpander();//initialize the text expand 
 
     }else{ 
 
\t \t  $('#medi_voting').fadeOut(); 
 
\t \t \t $('#label_s5').removeClass("label_se_active");   \t \t 
 
     } 
 
     if ($("#others_se").is(':checked')) { 
 
\t \t  $('#others_voting').fadeIn(); 
 
\t \t \t $('#label_s6').addClass("label_se_active"); 
 
\t \t \t 
 
\t \t \t jQuery("textarea[class*=expand1-99]").TextAreaExpander();//initialize the text expand 
 
     }else{ 
 
\t \t  $('#others_voting').fadeOut(); 
 
\t \t \t $('#label_s6').removeClass("label_se_active");   \t \t 
 
     } 
 
\t \t } // function menu_check 
 
\t  
 
\t

+0

Помогло бы посмотреть структуру html, чтобы помочь настроить траверсы. – charlietfl

ответ

4

Я думаю, что вы правы, думая, что вы можете сократить этот код. Структура если/другого кода является одинаковой для каждого элемента, так что вы можете написать:

var elements = { "diet": "2", "exer": "3", "reme": "4", :"medi": "5", "others": "6" }; 
$(elements).each(function (label_name, element_name) { 
    if ($("#" + element_name _ + "_se").is(':checked')) { 
     $('#' + element_name _ + '_voting').fadeIn(); 
     $('#label_s' + label_name).addClass("label_se_active"); 

     jQuery("textarea[class*=expand1-99]").TextAreaExpander(); //initialize the text expand 
    } else { 
     $('#' + element_name _ + '_voting').fadeOut(); 
     $('#label_s' + label_name).removeClass("label_se_active"); 
    } 
}) 

Я не проверял этот код, но в стороне от синтаксических ошибок, я думаю, что это правильно.

+0

спасибо за ваше время. Вы код мне очень многое подумали, что есть синтаксические ошибки. Я изменяю строку два на этот jQuery.each (obj, function (i, val) { – conan

Смежные вопросы