0

在此处参考我的小提琴。我有一个包含动态行的表,每个行都包含一个带有变量 ID 的复选框,其中 rowID 是在 function 内id="monitor_'+rowID+'"声明的没有关键字的全局变量。我尝试使用循环遍历行,但它似乎不起作用。varaddText().each(function(){});

我的目的是查看是否选中了每一行中的复选框。如果是,monitoring将调用一个函数。这是功能:

function monitoring() {
$('#test').append("checked");
fbType = $('td.nth(2)', $(this)).text();
fbNum = $('td.nth(3)', $(this)).text();
$('#test').append(fbType + fbNum);

$.post('/request', {
    inputText: fbNum,
    key_pressed: fbType.toString()
}).done(function (reply) {
    if (reply == "on") {
        $('#test').append("on ");
    } else {
        $('#test').append("off ");
    }
});

}

您可以添加行,但选择一个选项并添加一个数字,然后按“添加”按钮。首先.append("checked")是确保我正在调用该函数,但奇怪的是,即使我有几个复选框并且我都检查了它们,它也只会显示一次。

另一个问题,我无法显示以下内容:

fbType = $('td.nth(2)', $(this)).html();
fbNum = $('td.nth(3)', $(this)).html();

为什么会这样?这很重要,因为如您所见,我会将这些数据发布到 python 函数中......

请告诉我我的代码有什么问题以及我应该怎么做。

4

2 回答 2

2

您可以更改每个循环中的元素。我已经更改了第 n 个选择器以尝试获取值。在您的示例中,您尝试使用 jQuery 函数作为 CSS 选择器。

$('#monitor').click(function () {
  $('#status_table tr [id^="monitor_"]:checked').each(function () {
    monitoring($(this).parents('tr'));
  });
});

function monitoring($row) {
  $('#test').append("checked");
  fbType = $row.find('td:nth-child(2)').html();
  fbNum = $row.find('td:nth-child(3)').html();
  $('#test').append(fbType + fbNum);
}
于 2013-05-02T08:54:09.143 回答
1

你这里有一个算法问题:

$('#monitor').click(function () {
   $('#status_table tr').each(function () {
       $check = $('#status_table tr #monitor_' + rowID)
       if ($check.is(':checked')) {
           monitoring();
       }
  });
});

您正在使用 rowID,而正如您所说,它是一个全局变量,然后在您拥有的最后一个 rowID 上使用 .each() 时(如果有 3 行,rowID = 3)。

你能试着解释一下你想用这些线做什么:

fbType = $('td.nth(2)', $(this)).html();
fbNum = $('td.nth(3)', $(this)).html();
于 2013-05-02T08:53:27.503 回答