我的HTML
<TR class="datarow" id="rowId"><TD>1</TD><TD>895171</TD><td class="classID"><INPUT type="checkbox" /></TD></TR>
如何使用Jquery查看是否选中了此特定行中的复选框。假设我知道唯一的rowId。
目前,我正在这样做
var checkbox = $('#' + rowId + " td input:checkbox");
if (checkbox.checked) {
alert("checked");
} else {
alert("unchecked");
}
但是当检查复选框时,似乎没有检测到。
EDITED 奇怪的是,以下情况也不起作用:
var curRow = $('#' + curRowId);
var checkbox = $(curRow).find('input:checkbox').eq(0);
if (checkbox.checked) {
alert("checked");
} else {
alert("unchecked");
}
答案 0 :(得分:9)
你可以这样做:
var isChecked = $("#rowId input:checkbox")[0].checked;
使用后代选择器作为复选框,然后获取原始DOM元素,并查看其checked
属性。
选择者的参考:
答案 1 :(得分:4)
的更新强> 的
var rowId = "";
var checked = $("#" + rowId + " input:checkbox")[0].checked;
您的原始代码不起作用,因为您在jQuery结果集上调用checked
。你需要得到实际的DOM元素,你可以通过调用get()
来实现(或者直接索引对象,就像在T.J.的答案中一样)。由于只有一个结果,因此您希望结果集中的索引为0的元素。
编辑:
使用eq()
将匹配的元素减少到指定索引处的元素。实际上,这将返回一个jQuery结果集,其中包含一个匹配的对象 - 您在指定索引处请求的对象。 仍然不返回DOM元素,您需要使用checked
属性。
答案 2 :(得分:2)
如果每行只有一个复选框,这是最快的方式
!!$('#rowId input:checked').length
你也可以省略!!并检查'&gt; 0',但我认为!!实际上更快
答案 3 :(得分:0)
这样做
var checked = $("#rowId" + rowId + " td.classID input:checkbox").is(":checked");