javascript - 大量重复的 if/else 语句的最大优化/代码减少是多少?
问题描述
我有几个根据选项隐藏或显示元素的选择,jquery 过程对所有人都是相同的,但具有不同的 ID。
到目前为止,我为每个选择设置了两个 if/else 条件,一个用于隐藏/显示,另一个用于删除保存在其中一个元素中的任何内容,以防被隐藏。
这就是我隐藏或显示的方式:
$('#registration_welcome_template_option').on('change', function () {
if (this.value === 'default') {
$('#registration_welcome_default').show();
$('#registration_welcome_custom').hide();
} else {
$('#registration_welcome_default').hide();
$('#registration_welcome_custom').show();
}
}).change();
这就是我擦除隐藏元素数据的方式:
$('#registration_welcome_template_option').closest('form').submit(function () {
if ($('#registration_welcome_template_option').val() === 'default') {
$('#organization_admin_type_pages_email_registration_welcome_data_subject').val('');
$('#organization_admin_type_pages_email_registration_welcome_data_body').val('');
}
});
基本上我有这两个块每个重复 6 次,唯一的区别是 ID。由于这是对代码和处理的大量浪费,因此我正在寻找可能的最大优化以尽可能减少代码。
解决方案
您可以添加类并循环遍历元素
$('.registration_welcome_template_option').change(function(e){
$('.className').each(function(){
if (this.value === 'default') {
$(this).toggle();
}
};
});
$('#registration_welcome_template_option').closest('form').submit(function () {
if ($('#registration_welcome_template_option').val() === 'default') {
$('.className').each(function(){
$(this).val('');
}
};
}
});
推荐阅读
- azure - 具有多个订阅的 Azure Terraform Hub 和 Spoke
- windows-10 - 如何停止后台下载exe
- excel - 保存单元格内容的文件名
- html2canvas - 使用 HTML2canvas 截取 jitsi meet 会议截图
- python - 如何在井字游戏 PyQT5 中显示获胜棋步?
- typescript - 从 package.json 运行打字稿文件?
- python - 无法加载静态文件就我检查并在模板中添加加载静态但仍然没有获取静态文件而言,所有设置都是正确的
- python - Discord.py - 在 DM 上发送文本文件
- sql - 过滤具有可变长度的字母数字模式
- android - 如何在颤动的列中插入一行