I am having the following jquery logic. i want to make it more concise or optimise it. by using arrays.
function toggleStudyFields(service_type) {
if (service_type == "Study") {
$("#study_or_migrate").addClass("hidden");
$("#study-fields").removeClass("hidden");
$("#fields-except-visa").removeClass("hidden");
$("#visa-fields").addClass("hidden");
$("#coaching-fields").addClass("hidden");
} else if (service_type == "Visa") {
$("#study_or_migrate").addClass("hidden");
$("#fields-except-visa").addClass("hidden");
$("#visa-fields").removeClass("hidden");
$("#study-fields").addClass("hidden");
$("#coaching-fields").addClass("hidden");
} else if (service_type == "Coaching") {
$("#study_or_migrate").addClass("hidden");
$("#fields-except-visa").addClass("hidden");
$("#visa-fields").addClass("hidden");
$("#study-fields").addClass("hidden");
$("#coaching-fields").removeClass("hidden");
} else if (service_type == "Invest") {
$("#study_or_migrate").addClass("hidden");
$("#fields-except-visa").removeClass("hidden");
$("#visa-fields").addClass("hidden");
$("#study-fields").addClass("hidden");
$("#coaching-fields").addClass("hidden");
} else {
$("#study_or_migrate").removeClass("hidden");
$("#fields-except-visa").removeClass("hidden");
$("#visa-fields").addClass("hidden");
$("#study-fields").addClass("hidden");
$("#coaching-fields").addClass("hidden");
}
}
i don't know how to optimise the logic. can someone help me with this.
Because
addClass
is much more common thanremoveClass
, I'd suggest making an object indexed byservice_type
, whose values are selectors which indicate which classes should be removed. Addhidden
to all elements, andremove
them from the elements given by the selector string in the object: