我在这里有一点脑屁,并希望有人可以帮助我找到解决这个问题的单行解决方案,而无需致电.each()
。
所以我得到一个容器中的所有复选框的列表,如下所示:
var checkboxes = $(':checkbox', '#surveyModal');
稍后,我需要查明是否在该列表中选中了任何(或没有)复选框。
我期待这样的事情发挥作用:
$(':checked', checkboxes)
// or
checkboxes.attr(':checked')
// or
$(checkboxes).attr(':checked')
但事实并非如此。我唯一成功的就是调用each()
然后单独检查每个。但这意味着我必须在更高级别的范围内保留一个单独的变量(例如someAreChecked
,我觉得这不是最佳的。
checkboxes.each(function () {
if ($(this).attr('checked')) {
someAreChecked = true;
}
});
我希望我能够轻松地在一行中做这样的检查:
if (checkboxes.('get checked count') == 0)
{
}
提前致谢。
答案 0 :(得分:2)
过滤功能正是您所寻找的:)
checkboxes.filter(':checked').length;
答案 1 :(得分:1)
.attr
返回属性的值,您必须将属性的名称传递给它,而不是选择器。
只需使用.is
。
描述:根据a检查当前匹配的元素集 选择器,元素或jQuery对象,如果至少有一个,则返回true 这些元素与给定的参数匹配。
$(checkboxes).is(':checked')
答案 2 :(得分:-1)
这应该这样做:
$("input[type=checkbox][checked]").length