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

时间:2011-02-18 22:12:55

标签: jquery

我的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");

        }

4 个答案:

答案 0 :(得分:9)

你可以这样做:

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

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

选择者的参考:

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

答案 1 :(得分:4)

更新

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

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

在OP中看到更新的代码后

编辑

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

答案 2 :(得分:2)

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

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

你也可以省略!!并检查'&gt; 0',但我认为!!实际上更快

答案 3 :(得分:0)

这样做

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