Mic*_*son 0 javascript jquery refactoring if-statement
我有一系列if-else语句.我知道有一种更有效的方法可以做到这一点,但我对javascript不够熟悉.有人可以提供一些指导吗?
$('#webform-component-primary-credential--0').change (function() {
if ($('#edit-submitted-primary-credential-0').val() == 35) {
$('#edit-submitted-additional-credentials-0-47').attr('checked', false);
$("#edit-submitted-additional-credentials-0-47").attr("disabled", "disabled");
} else {
$("#edit-submitted-additional-credentials-0-47").removeAttr("disabled");
}
if ($('#edit-submitted-primary-credential-0').val() == 41) {
$('#edit-submitted-additional-credentials-0-53').attr('checked', false);
$("#edit-submitted-additional-credentials-0-53").attr("disabled", "disabled");
} else {
$("#edit-submitted-additional-credentials-0-53").removeAttr("disabled");
}
if ($('#edit-submitted-primary-credential-0').val() == 13) {
$('#edit-submitted-additional-credentials-0-29').attr('checked', false);
$("#edit-submitted-additional-credentials-0-29").attr("disabled", "disabled");
} else {
$("#edit-submitted-additional-credentials-0-29").removeAttr("disabled");
}
});
Run Code Online (Sandbox Code Playgroud)
本系列中还有大约12个if-else语句,但这给出了一般的想法.
如果您总是检查相同的值,请使用switch-case语句:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Statements/switch
(这也可以用在C/C++和许多其他借用它们语法的语言中.有些语言有变化,比如Ruby的case-when语法.)
你的代码实际上有点麻烦,无法考虑switch-case语句(它最适合一个长if () {} else if () {} ... else () {}链),但这是你可以做到的一种方法:
$('#webform-component-primary-credential--0').change (function() {
var active_element;
$("#edit-submitted-additional-credentials-0-47").removeAttr("disabled");
$("#edit-submitted-additional-credentials-0-53").removeAttr("disabled");
$("#edit-submitted-additional-credentials-0-29").removeAttr("disabled");
switch ($('#edit-submitted-primary-credential-0').val()) {
case 35:
active_element = $("#edit-submitted-additional-credentials-0-47");
break;
case 41:
active_element = $("#edit-submitted-additional-credentials-0-53");
break;
case 13:
active_element = $("#edit-submitted-additional-credentials-0-29");
break;
}
active_element.attr('checked', false);
active_element.attr("disabled", "disabled");
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
596 次 |
| 最近记录: |