2011-05-01 46 views

回答

15

你只需要检查的检查阵列

$('.check').change(function() { 
    if ($('.check:checked').length) { 
     $('#sub').removeAttr('disabled'); 
    } else { 
     $('#sub').attr('disabled', 'disabled'); 
    } 
}); 

这里的length属性的演示:http://jsfiddle.net/LUnN5/

+0

+1(在11小时内,当我的票帽复位)用于获取' :在我想到之前检查过。 – alex 2011-05-01 12:52:51

+0

而不是再次扫描DOM,并使用'$('。check:checked').length'来实例化更多的jQuery对象,您可以简单地测试'this.checked'。 – Jason 2017-01-13 11:39:37

+0

@Jason你需要扫描DOM,因为问题是否检查'任何'复选标记。所以即使被点击的那个没有被选中,也可能有其他的被选中。 – JohnP 2017-01-13 14:15:54

1

获取有关所有复选框的引用,然后在change()事件中,根据是否选中任何复选框来设置disabled属性。

var checks = $(':checkbox.check'); 
checks.change(function() { 
    $('#bla').attr('disabled', ! checks.filter(':checked').length); 
}); 

jsFiddle

1
$(".check").change(function() { 

    var btn = $("#bla"); 

    if ($(".check").is(":checked")) { 

     btn.removeAttr("disabled"); 

    } else { 

     btn.attr("disabled", "disabled"); 

    } 

}); 

$(".check").triggerHandler("change"); 
相关问题