如何使用JQuery循环遍历同一行中的表格单元格

时间:2014-04-09 16:05:09

标签: javascript jquery jquery-ui

我有这个表,它总是有一行:

<table id="contractCoverablesGrid" width="600" align="center">
    <tbody>
        <tr>
            @foreach (var coverableItem in Model.ContractCoverablesList)
            {
                <td>
                    <div id="dataListItem">
                        @Html.Hidden("coverableID", coverableItem.CoverID)
                        @Html.Label(coverableItem.Name)
                        @Html.CheckBox("coverableItemCheckBox", coverableItem.IsApplied)
                    </div>
                </td>
            }
        </tr>
    </tbody>
</table>

我希望能够遍历每个单元格,找出是否选中了复选框,然后捕获该单元格中的ID,就像看到隐藏字段一样。

我试过这样做,但问题是当它到达if子句时;它没有检测到复选框:

//Coverable Items
var count = 0;
var allCoverableItems = [];
$("#contractCoverablesGrid tbody tr td").each(function () {
    var cell = $(this);

    var coverableItem = {};

    if (cell.find('td input[type="checkbox"]').is(':checked')) { // Here, it doesn't detect checked boxes!!
        var coverableId = cell.find("input[name='coverableID']")[count].value;

        coverableItem["CoverID"] = coverableId;
        allCoverableItems.push(coverableItem);
    }
    count++;
});

我想知道这里有什么问题 - 我对JQuery / Javascript有点新鲜。

非常感谢。

修改

这是工作代码:

//Coverable Items
var allCoverableItems = [];
$("#contractCoverablesGrid tbody tr td").each(function () {
    var cell = $(this);

    var coverableItem = {};

    if (cell.find('input[type="checkbox"]').is(':checked')) {
        var coverableId = cell.find("input[name='coverableID']").val();

        coverableItem["CoverID"] = coverableId;
        allCoverableItems.push(coverableItem);
    }
});

我删除了计数并按照下面的答案加上;我使用val()而不是value;

1 个答案:

答案 0 :(得分:3)

麻烦在于您的选择器。您正在cell内搜索td,但cell已经是td。将其更改为:

cell.find('input[type="checkbox"]')

当您尝试通过[count]访问隐藏字段时,下一行也会出现问题。看起来当您开始编写此代码时,您打算对该行进行操作,但在某些时候选择迭代单元格。下一行应该是:

var coverableId = cell.find("input[name='coverableID']").val();