我试图获取所有已检查的记录并获取其中的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我怎么能得到它的控制器。我正面临着这些问题。谁能给我一些建议?
答案 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}} 外面循环
allIds
可以使用后代选择器编写:$("#registerGrid").find("tr").find("td")
我们只需要遍历那些带有复选框的复选框,而不是循环遍历所有$("#registerGrid tr td")
。我们可以将td
与jQuery的伪:has
选择器一起使用。
jQuery对象有一个:checked
函数,可以根据从每次调用返回的回调构建一个jQuery对象;然后,您可以使用map
直播示例:
.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;