jQuery唯一名称选择器

时间:2012-12-18 14:55:40

标签: jquery

我有多组复选框和收音机 每个组都有一个唯一的名称属性,但我不知道这些名称。

我正在寻找一个选择器来获取每个组,然后循环它们以确保至少检查一个项目。

显然我可以做一个并比较名称,创建一个独特的数组,然后循环遍历数组,但我宁愿一个一个地完成所有这些更精通。建议?

2 个答案:

答案 0 :(得分:1)

您可以遍历元素并将每个组的计数存储为对象中的属性。例如:

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/

答案 1 :(得分:0)

一个类似的解决方案(从Guffa分叉),使用jQuery的:checked selector。

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);
    }
});

http://jsfiddle.net/h8ayM/