请参考我的小提琴here。我有一个包含动态行的表,每个表包含一个变量ID为id="monitor_'+rowID+'"
的复选框,其中rowID是在函数var
内声明没有关键字addText()
的全局变量。我试图使用.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函数......
请告诉我我的代码有什么问题以及我应该怎么做。
答案 0 :(得分: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);
}
答案 1 :(得分: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();