Jquery在表格行中找到一个复选框

我的HTML

1895171 

我如何使用Jquery来确定是否选中了此特定行中的复选框。 假设我知道唯一的rowId。

目前,我正在这样做

 var checkbox = $('#' + rowId + " td input:checkbox"); if (checkbox.checked) { alert("checked"); } else { alert("unchecked"); } 

但是,当检查复选框时,似乎没有检测到。

编辑奇怪的是,以下内容也不起作用:

  var curRow = $('#' + curRowId); var checkbox = $(curRow).find('input:checkbox').eq(0); if (checkbox.checked) { alert("checked"); } else { alert("unchecked"); } 

你可以这样做:

 var isChecked = $("#rowId input:checkbox")[0].checked; 

它使用复选框的后代选择器 ,然后获取原始DOM元素,并查看其checked属性。

选择者的参考:

  • 大多数浏览器支持的选择器: CSS 2.1
  • 某些浏览器和各种JavaScript库支持的较新选择器(用于与DOM交互): CSS3选择器

更新:

 var rowId = ""; var checked = $("#" + rowId + " input:checkbox")[0].checked; 

您的原始代码不起作用,因为您在jQuery结果集上调用了checked 。 您需要获取实际的DOM元素,您可以通过调用get() (或者通过直接索引对象,就像在TJ的答案中一样)。 由于只有一个结果,因此您希望结果集中的索引为0的元素。

在OP中查看更新的代码后编辑

使用eq() 将匹配的元素减少到指定索引处的元素 。 实际上,这将返回一个jQuery结果集,其中包含一个匹配的对象 – 您在指定索引处请求的对象。 它仍然不返回DOM元素,您需要使用checked属性。

如果每行只有一个复选框,这是最快捷的方式

 !!$('#rowId input:checked').length 

你也可以省略!! 并检查’> 0’,但我认为!! 实际上更快

这样做会

 var checked = $("#rowId" + rowId + " td.classID input:checkbox").is(":checked");