为什么比较检查的属性不能用于检查至少一个复选框?

时间:2013-01-18 06:29:36

标签: jquery jquery-ui jquery-selectors

我做了类似的事情,检查所有复选框都已选中:

var container = $("#container");
$(container).find("input[type='checkbox'][checked != 'checked']").length == 0

但是当我使用checked属性进行检查时,至少选择了一个框,它总是给我长度= 0,我的代码如下:

 $(container).find("input[type='checkbox'][checked = 'checked']").length > 0 

区别在于我使用'!='的第一个代码片段,而在第二个代码片段中我使用了“=”。那么为什么它不适用于第二种情况呢?

我知道我可以通过以下方式使用它:

  $(container).find("input[type='checkbox']:is('checked')").length > 0 
  $(container).find("input[type='checkbox']:checked").length > 0

但仍然想了解为什么上面的东西不起作用:O

我不知道这是否是原因,但我选择了All复选框,这是通过为所有复选框设置'checked'属性值来实现的

$(container).find("input[type='checkbox']").attr("checked","checked")

为了取消选中我的所有复选框:

$(container).find("input[type='checkbox']").removeAttr("checked","checked")

可能是因为我在取消选择时删除了attr,当我再次通过UI点击复选框时,我没有得到其检查的属性值。是这种情况吗?

1 个答案:

答案 0 :(得分:0)

然后尝试这个

$('#container').find("input[type=checkbox]:checked").length > 0

$.each($("input[type=checkbox]:checked"), function() {

alert('Checked')

});

http://jsfiddle.net/kabichill/hAv3z/