.is(':checked')总是返回true

时间:2013-03-07 19:02:20

标签: jquery

HTML:

<table id="list">
   <tr>
      <td><input type="checkbox" checked="true"></td>
      <td>...</td>
   </tr>
   <tr>
      <td><input type="checkbox" checked="true"></td>
      ...
   </tr>
   ...
</table>

JS:

$('#list tr').each(function(){
   console.log(
        $(this).find('input[type="checkbox"]').is(':checked')
   );    
});

问题:上面的日志语句总是返回true。每个tr都包含一些数据,我想使用这些数据执行操作。但是用户可以取消选择某些实体,在这种情况下这是不可能的,因为is(':checked')总是返回true,即使取消选中/取消选中该条目也是如此。

任何想法如何解决这个问题?

3 个答案:

答案 0 :(得分:3)

“已检查”属性的值为true,因此即使true也会被检查,它也会返回<input type="checkbox" checked />

我使用您的代码创建了一个demo,并在其属性发生变化时附加了检索.is(":checked")的函数。

$("input").change(function() {
    console.log($(this).is(':checked'));
});

它显示了变化。你的问题必须在其他地方。

答案 1 :(得分:2)

首先,选中以下语句的所有复选框,如果选中一个,则返回true

$(this).find('input[type="checkbox"]').is(':checked')

其次应检查check的默认值=“checked”。

答案 2 :(得分:2)

我的猜测是你实际上正在使用它:

input type="checkbox" checked="false"

导致选中复选框,因为"false"(作为字符串)的计算结果为true

如果要取消选中复选框,请不要包含checked属性。