JQuery:替代 each() 以根据选定的复选框值进行条件检查
JQuery: Alternative to each() for conditional check against selected checkbox values
1) 复选框有五个值:GRA、RRA、FRA、MRA、CHDA
2) 复选框 class 名称是哎呀。所有 5.
通用
3) 如果未选择 FRA、MRA、CHDA 值,我们将抛出异常
4) 以下是我用来实现此目的的代码片段:
var availability = false;
$(".oops:checked").each(function() {
if($(this).val() === 'FRA' || $(this).val() === 'MRA' || $(this).val() === 'CHDA') {
availability = true;
}
});
if (!availability) {
errors.push('There is no selected among FRA MRA CHRA');
}
我们是否有其他更好的方法来处理这个问题,而不是使用三个 or 运算符并在 each() 函数中检查它?
您可以为复选框的所有允许值创建一个数组数据结构,并根据它们检查选定的值:
var availability = false;
var alloweValues = ['FRA', 'MRA', 'CHDA'];
$(".oops:checked").each(function() {
if(alloweValues.includes($(this).val())) {
availability = true;
}
});
if (!availability) {
errors.push('There is no selected among FRA MRA CHRA');
}
您可以进一步将代码重构为:
var availability = false;
var alloweValues = ['FRA', 'MRA', 'CHDA'];
$(".oops:checked").each(function() {
availability = alloweValues.includes($(this).val());
});
if (!availability) {
errors.push('There is no selected among FRA MRA CHRA');
}
您也可以将 includes()
替换为 indexOf()
,例如
alloweValues.indexOf($(this).val()) !== -1
因为,includes()
在 IE 浏览器中不工作。
创建一个数组来存储每个选中的值,如下所示:
var checkvalues=[];
$(".oops:checked").each(function(){
checkvalues.push($(this).val());
});
之后你可以使用includes()
方法像上面的代码一样检查。
1) 复选框有五个值:GRA、RRA、FRA、MRA、CHDA
2) 复选框 class 名称是哎呀。所有 5.
通用3) 如果未选择 FRA、MRA、CHDA 值,我们将抛出异常
4) 以下是我用来实现此目的的代码片段:
var availability = false;
$(".oops:checked").each(function() {
if($(this).val() === 'FRA' || $(this).val() === 'MRA' || $(this).val() === 'CHDA') {
availability = true;
}
});
if (!availability) {
errors.push('There is no selected among FRA MRA CHRA');
}
我们是否有其他更好的方法来处理这个问题,而不是使用三个 or 运算符并在 each() 函数中检查它?
您可以为复选框的所有允许值创建一个数组数据结构,并根据它们检查选定的值:
var availability = false;
var alloweValues = ['FRA', 'MRA', 'CHDA'];
$(".oops:checked").each(function() {
if(alloweValues.includes($(this).val())) {
availability = true;
}
});
if (!availability) {
errors.push('There is no selected among FRA MRA CHRA');
}
您可以进一步将代码重构为:
var availability = false;
var alloweValues = ['FRA', 'MRA', 'CHDA'];
$(".oops:checked").each(function() {
availability = alloweValues.includes($(this).val());
});
if (!availability) {
errors.push('There is no selected among FRA MRA CHRA');
}
您也可以将 includes()
替换为 indexOf()
,例如
alloweValues.indexOf($(this).val()) !== -1
因为,includes()
在 IE 浏览器中不工作。
创建一个数组来存储每个选中的值,如下所示:
var checkvalues=[];
$(".oops:checked").each(function(){
checkvalues.push($(this).val());
});
之后你可以使用includes()
方法像上面的代码一样检查。