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,即使取消选中/取消选中该条目也是如此。
任何想法如何解决这个问题?
答案 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属性。