您有更好的动态方式来缩短复杂的代码jquery吗



我想知道我有没有一种动态的方法将以下代码组合成一个简短的代码。我有很多if().is(:checked){}else{},我可以做一些类似的事情吗,if(this).is?你有办法吗?欣赏

 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
	   
	   

我认为您认为可以缩短此代码的想法是正确的。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");
    }
})

我还没有测试过这段代码,但除了语法错误之外,我认为它是正确的。

最新更新