使用 jquery 选中和取消选中具有动态 ID 和 class 的复选框
Checking and unchecking checkboxes with dynamic ids and class using jquery
我有一个包含分组的网格,即网格显示组的产品。因此,该结构具有 Group 及其子项。以同样的方式,我将有一些其他组和我绑定的他们的孩子,例如 below.I 想要在单击 parent.
时选中和取消选中整个子列表
CSHTML
@{
if (Model.List.Count() > 0)
{
<table>
<tr>
<input type="checkbox" class="cls@(obj.GroupId)" name="@obj.GroupId" onclick="checkUncheckAll(this.class)" />
<td>Name</td>
</tr>
@foreach (var obj in Model.subList)
{
<tr>
<td>
<input type="checkbox" class="cls@(obj.GroupId)" name="@obj.GroupId" /></td>
</td>
<td>
@obj.Name
</td>
</tr>
</table>
}
}
<input type="button" value="Save" onclick="PickAllCheckedRows();" />
我一直在尝试像下面那样做,但没有成功。我还想在单击保存按钮时选择所有选中的组及其子项。任何帮助将不胜感激。
<script type="text/javascript">
function checkUncheckAll(sender) {
alert(sender);
var chkElements = document.getElementsByClassName('chkItems');
for (var i = 0; i < chkElements.length; i++) {
chkElements[i].checked = sender.checked;
}
}
function PickAllCheckedRows() {
}
</script>
你正在调用你的函数传入 undefined
因为你正在传递 this.class
:
onclick="checkUncheckAll(this.class)"
元素没有 class
属性(它们确实有 className
),如果有,您不想传递它的 class,您想传递元素本身,因为您将其用作 sender.checked
.
只需从通话中删除 .class
。
如果您尝试在一个组中完成所有,那么您需要在函数中使用className
,同时将其他复选框设置为check/uncheck:
function checkUncheckAll(sender) {
var chkElements = document.getElementsByClassName(sender.className);
// Note ------------------------------------------------^^^^^^^^^^
for (var i = 0; i < chkElements.length; i++) {
if (chkElements[i] !== sender) { // Not strictly necessary I guess, but...
chkElements[i].checked = sender.checked;
}
}
}
假设您在 "all" 复选框上只有一个 class。
我有一个包含分组的网格,即网格显示组的产品。因此,该结构具有 Group 及其子项。以同样的方式,我将有一些其他组和我绑定的他们的孩子,例如 below.I 想要在单击 parent.
时选中和取消选中整个子列表CSHTML
@{
if (Model.List.Count() > 0)
{
<table>
<tr>
<input type="checkbox" class="cls@(obj.GroupId)" name="@obj.GroupId" onclick="checkUncheckAll(this.class)" />
<td>Name</td>
</tr>
@foreach (var obj in Model.subList)
{
<tr>
<td>
<input type="checkbox" class="cls@(obj.GroupId)" name="@obj.GroupId" /></td>
</td>
<td>
@obj.Name
</td>
</tr>
</table>
}
}
<input type="button" value="Save" onclick="PickAllCheckedRows();" />
我一直在尝试像下面那样做,但没有成功。我还想在单击保存按钮时选择所有选中的组及其子项。任何帮助将不胜感激。
<script type="text/javascript">
function checkUncheckAll(sender) {
alert(sender);
var chkElements = document.getElementsByClassName('chkItems');
for (var i = 0; i < chkElements.length; i++) {
chkElements[i].checked = sender.checked;
}
}
function PickAllCheckedRows() {
}
</script>
你正在调用你的函数传入 undefined
因为你正在传递 this.class
:
onclick="checkUncheckAll(this.class)"
元素没有 class
属性(它们确实有 className
),如果有,您不想传递它的 class,您想传递元素本身,因为您将其用作 sender.checked
.
只需从通话中删除 .class
。
如果您尝试在一个组中完成所有,那么您需要在函数中使用className
,同时将其他复选框设置为check/uncheck:
function checkUncheckAll(sender) {
var chkElements = document.getElementsByClassName(sender.className);
// Note ------------------------------------------------^^^^^^^^^^
for (var i = 0; i < chkElements.length; i++) {
if (chkElements[i] !== sender) { // Not strictly necessary I guess, but...
chkElements[i].checked = sender.checked;
}
}
}
假设您在 "all" 复选框上只有一个 class。