我有多组复选框和收音机。
每个组都有一个唯一的名称属性,但我不知道这些名称。
我正在寻找一个选择器来获取每个组,然后遍历它们以确保至少检查一个项目。
显然,我可以做一个 each 并比较名称,创建一个唯一的数组,然后循环遍历该数组,但我宁愿一个一个地完成所有操作,以便更加熟练。建议?
我有多组复选框和收音机。
每个组都有一个唯一的名称属性,但我不知道这些名称。
我正在寻找一个选择器来获取每个组,然后遍历它们以确保至少检查一个项目。
显然,我可以做一个 each 并比较名称,创建一个唯一的数组,然后循环遍历该数组,但我宁愿一个一个地完成所有操作,以便更加熟练。建议?
您可以遍历元素并将每个组的计数作为属性存储在对象中。例子:
var names = {};
$(':checkbox').each(function(){
var name = $(this).attr('name');
names[name] = (names[name] || 0) + ($(this).is(':checked') ? 1 : 0);
});
$.each(names, function(i, e){
if (e == 0) {
alert('No checkbox in group ' + i + ' is checked.');
}
});
演示:http: //jsfiddle.net/d4mTs/
一个类似的解决方案(来自 Guffa),使用 jQuery 的 :checked 选择器。
var names = {};
$(':checkbox').each(function(){
var name = $(this).attr('name');
if (names[name] == null)
{
var c = $("input[name='" + name + "']:checked").length;
names[name] = c;
if (c == 0)
alert('Not checked: ' + name);
}
});