jquery数组已存储复选框未响应

jquery数组已存储复选框未响应,jquery,Jquery,我有4组复选框,其中我将所有这4个都分组到一个数组中,在我存储组复选框后,我无法将事件添加到这些框中,我认为我做错了什么。。有人纠正我的密码吗 我想要的是,当用户单击复选框时,可以进一步使用ing group(允许最多4个)进行检查,如果他们切换到其他组,则其他组需要取消选中,并且他们有权从选择的组中选择4个 我是这样分组的,下一步我需要禁用和无法分组到允许4个选择,有什么好主意来完成这项工作吗 var geoGroup = []; $('input:checkbox','#geography

我有4组复选框,其中我将所有这4个都分组到一个数组中,在我存储组复选框后,我无法将事件添加到这些框中,我认为我做错了什么。。有人纠正我的密码吗

我想要的是,当用户单击复选框时,可以进一步使用ing group(允许最多4个)进行检查,如果他们切换到其他组,则其他组需要取消选中,并且他们有权从选择的组中选择4个

我是这样分组的,下一步我需要禁用和无法分组到允许4个选择,有什么好主意来完成这项工作吗

var geoGroup = [];

$('input:checkbox','#geography').each(function(i){
    if(typeof geoGroup[$(this).attr('name')] == 'undefined')
        geoGroup[$(this).attr('name')] = [];
    geoGroup[$(this).attr('name')].push($(this));

    $('input:checkbox',geoGroup[$(this).attr('name')]).live('click', function(){
        alert('hi')
    })
})

只要稍微清理一下,它就能正常运行。原始代码中存在一个小错误(在我的示例中重复),即当数组项没有子项,因此不需要遍历时,使用数组项的上下文进行遍历:


你不需要一个数组来实现你想要的

        $('input:checkbox', "#geography").each(function(i){
            $(this).click(function(){ 
                var name = $(this).attr('name');
                $('input:checkbox', "#geography").each(function(i){
                    if($(this).attr('name') != name){
                        $(this).attr("checked", false);
                    }
                });
            })
        });

如果您使用的是jQuery 1.7,请使用
on()
而不是live,因为
live()
已被弃用。下面没有使用数组,它只是取消选中其他组

假设每个组都包装在一个带有class='checkgroup'的容器中

演示:


你能提供相关的html吗?屏幕附件供参考,谢谢。但我总是需要一个有资格添加任何其他组的检查组。好的,让我试试。谢谢。如果您提供了html,那么创建演示和理解这个问题就会容易得多。4的限制不容易理解,仍然不确定到底是什么规则。使用jQuery
:checked
selector可以很容易地计算出检查了多少。该版本将一个组中仅限制为4个,并禁用组中的其他版本。是的,这就是我要查找的。谢谢是的,放置html是个好主意,让我在接下来的请求中这样做。非常感谢你!
        $('input:checkbox', "#geography").each(function(i){
            $(this).click(function(){ 
                var name = $(this).attr('name');
                $('input:checkbox', "#geography").each(function(i){
                    if($(this).attr('name') != name){
                        $(this).attr("checked", false);
                    }
                });
            })
        });
$('#geography').on('change', 'input:checkbox', function() {
    $('.checkgroup').not($(this).closest('.checkgroup')).find('input:checkbox').prop('checked', false);
});