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

How to loop through table cells in the same row with JQuery

本文关键字:一行 单元格 表单 JQuery 何使用 循环 遍历      更新时间:2023-09-26

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

<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;

问题出在选择器上。您正在cell中搜索td,但cell已经是td。将其更改为:

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

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

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