我应该如何在表列中迭代此循环以获取id

时间:2016-02-20 17:20:54

标签: javascript jquery

我试图获取所有已检查的记录并获取其中的ID。 但使用foreach的代码不会迭代。它只取出第一行id。这是我的代码

$("#saveToDocReg").click(function () {
    var just = $("#registerGrid").find("tr").find("td");
    $("#registerGrid").find("tr").find("td").each(function () {
        if ($(this).find("input:checkbox").is(':checked')) {
            var ids = $(this).find("input:hidden").val();
            alert(ids);
            var allIds = [];

            for (var x = 0, l = ids.length; x < l; x++) {
                allIds.push(ids[x].value);
            }

            var str = allIds.join(', ');
        }
    });
});

一旦我得到了ids我怎么能得到它的控制器。我正面临着这些问题。谁能给我一些建议?

1 个答案:

答案 0 :(得分:0)

您的allIds和相关逻辑循环迭代器函数中,因此每次调用循环迭代器函数时都会重新创建它们(例如,对于每个td })。

如果您的目标是获取所有ID(来自隐藏字段的值),那么它可以比这简单得多:

$("#saveToDocReg").click(function () {
    var allIds = $("#registerGrid tr td:has(input:checkbox:checked)").map(function() {
        return $(this).find("input:hidden").val();
    }).get();
    alert(allIds.join(', '));
});

的变化:

  1. 主要变化是在{<1}} 外面循环

  2. allIds可以使用后代选择器编写:$("#registerGrid").find("tr").find("td")

  3. 我们只需要遍历那些带有复选框的复选框,而不是循环遍历所有$("#registerGrid tr td")。我们可以将td与jQuery的伪:has选择器一起使用。

  4. jQuery对象有一个:checked函数,可以根据从每次调用返回的回调构建一个jQuery对象;然后,您可以使用map

  5. 从中获取基础数组

    直播示例:

    &#13;
    &#13;
    .get()
    &#13;
    $("#saveToDocReg").click(function() {
      var allIds = $("#registerGrid tr td:has(input:checkbox:checked)").map(function() {
        return $(this).find("input:hidden").val();
      }).get();
      alert(allIds.join(', '));
    });
    &#13;
    &#13;
    &#13;