因此,我将复选框与数据组名称分组,如果选中了组成员之一,则使用jQuery自动选择整个组。
这是我的JS代码:
function checkAllList(listNavPath, selectAllId, checkBoxes) {
if (!checkBoxes) {
checkBoxes = $(listNavPath + ":not(#" + selectAllId + ")")
}; //Exclude first checkbox
function selectAllCheckBoxes() {
if (checkBoxes.filter(":checked").length == checkBoxes.length) {
$("#" + selectAllId).prop("checked", true);
} else {
$("#" + selectAllId).prop("checked", false);
}
}
selectAllCheckBoxes();
$(document).on("click", "#" + selectAllId, function () { checkBoxes.prop('checked', $(this).prop("checked")); });
$(document).on("click", checkBoxes, function (e) {
var isChecked = $(e.target).prop("checked");
var parent = $(e.target).parent();
var groupName = $(parent).data("groupname");
var chs = $("[data-groupname='" + groupName + "']");
$(chs).each(function (i) {
var chk = $(chs[i]).children().first();
$(chk).prop('checked', isChecked);
})
这工作得很好,但我想限制.each()使其仅循环通过“组名parent”的父级(如果有意义)。换句话说,我不想在该表之外查找任何组名。在我的示例中,在整个页面上查找该组名,然后如果“ Parent Group Name” ==“ groupName”,则自动选择/取消选择该组,否则返回true;否则,返回true。继续循环。
这是我的ASP标记复选框。这是在创建一列复选框,每行一个。复选框是根据(vb.net)后面的代码动态生成的。
<asp:TemplateField>
<HeaderTemplate><asp:CheckBox runat="server" Checked="true" /></HeaderTemplate>
<ItemTemplate><asp:CheckBox runat="server" data-groupname='<%#Eval("InvoiceCreditNumber")%>' Checked="true" ID="chkSelected" /></ItemTemplate>
</asp:TemplateField>
希望对采用什么方法可以使这项工作有任何想法。
谢谢。
答案 0 :(得分:2)
换句话说,我不想在该表之外查找任何组名。
如果该表具有ID或类,则可以将“ [data-groupname ='” + groupName +“']的选择限制在表中,如下所示:
$(“ [data-groupname ='” + groupName +“']”,“#id-table”);
或
$(“#id-table”)。find(“ [data-groupname ='” + groupName +“']”);
答案 1 :(得分:0)
[已解决]
这是我为了使其工作而做的事情:
我得到了这样的桌子:
var tblID = $(e.target).closest('.select-all');
因为.select-all
是我要在其中使用复选框的所有表中使用的类。
然后我只在该表中循环如下:
var chs = $(tblID).find("[data-groupname='" + groupName + "']")
$(chs).each(function (i) {
var chk = $(chs[i]).children().first();
$(chk).prop('checked', isChecked);
})
感谢大家的回应。你们都被投票了。
快乐的编码。