你有更好的动态方法来缩短复杂的代码jquery吗?

时间:2015-04-09 00:25:05

标签: javascript jquery

我想知道我是否有动态方法将以下代码组合成一个简短的代码。我有很多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
	   
	   

1 个答案:

答案 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");
    }
})

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