我想知道我是否有动态方法将以下代码组合成一个简短的代码。我有很多if()。是(:checked){} else {},我可以做类似的事情,if(this).is(:checked),我试图使用.closest(),但是'don'知道如何实现它,还想使用数组?你有什么办法吗?升值。
if ($("#diet_se").is(':checked')) {
$('#diet_voting').fadeIn();
$('#label_s2').addClass("label_se_active");
jQuery("textarea[class*=expand1-99]").TextAreaExpander();//initialize the text expand
}else{
$('#diet_voting').fadeOut();
$('#label_s2').removeClass("label_se_active");
}
if ($("#exer_se").is(':checked')) {
$('#exer_voting').fadeIn();
$('#label_s3').addClass("label_se_active");
jQuery("textarea[class*=expand1-99]").TextAreaExpander();//initialize the text expand
}else{
$('#exer_voting').fadeOut();
$('#label_s3').removeClass("label_se_active");
}
if ($("#reme_se").is(':checked')) {
$('#reme_voting').fadeIn();
$('#label_s4').addClass("label_se_active");
jQuery("textarea[class*=expand1-99]").TextAreaExpander();//initialize the text expand
}else{
$('#reme_voting').fadeOut();
$('#label_s4').removeClass("label_se_active");
}
if ($("#medi_se").is(':checked')) {
$('#medi_voting').fadeIn();
$('#label_s5').addClass("label_se_active");
jQuery("textarea[class*=expand1-99]").TextAreaExpander();//initialize the text expand
}else{
$('#medi_voting').fadeOut();
$('#label_s5').removeClass("label_se_active");
}
if ($("#others_se").is(':checked')) {
$('#others_voting').fadeIn();
$('#label_s6').addClass("label_se_active");
jQuery("textarea[class*=expand1-99]").TextAreaExpander();//initialize the text expand
}else{
$('#others_voting').fadeOut();
$('#label_s6').removeClass("label_se_active");
}
} // function menu_check
答案 0 :(得分:4)
我认为你可以缩短这段代码是正确的。 if / else代码的结构对于每个元素都是相同的,因此您可以编写:
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");
}
})
我没有测试过这段代码,但除了语法错误外,我认为这是正确的。