2014-06-26 63 views
0

有没有简化和结合这两个功能的方法?我正在为大量元素做这件事,而且它很快变得非常麻烦。结合onLoad和Change功能?

我已上载这里的代码的工作示例:http://jsfiddle.net/JFJSA/5/

$(document).ready(function() { 
    var goalVal = $("[name=objective]").val(); 
    $("#goal_Minimize, #goal_Maximize, #AltScenario").hide(); 
    if (goalVal === "Minimize") { 
     $("#goal_Minimize").show(); 
    } else if (goalVal == "Maximize") { 
     $("#goal_Maximize").show() 
    } else if (goalVal == "AltScenario") { 
     $("#AltScenario").show() 
    }; 
}); 
$("[name=objective]").change(function() { 
    var goalVal = $("[name=objective]").val(); 
    $("#goal_Minimize, #goal_Maximize, #AltScenario").hide(); 
    if (goalVal == "Minimize") { 
     $("#goal_Minimize").show(); 
    } else if (goalVal == "Maximize") { 
     $("#goal_Maximize").show() 
    } else if (goalVal == "AltScenario") { 
     $("#AltScenario").show() 
    }; 
}); 

回答

1

是的,只是一个正常的更换你的匿名函数:

var doTheThing = function() { 
    var goalVal = $("[name=objective]").val(); 
    $("#goal_Minimize, #goal_Maximize, #AltScenario").hide(); 
    if (goalVal === "Minimize") { 
     $("#goal_Minimize").show(); 
    } else if (goalVal == "Maximize") { 
     $("#goal_Maximize").show() 
    } else if (goalVal == "AltScenario") { 
     $("#AltScenario").show() 
    }; 
}; 

$(document).ready(doTheThing); 
$("[name=objective]").change(doTheThing); 
+0

你刚才救了我几个小时 - d –