2014-06-26 102 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 –