我正在使用IE8和Firefox作为浏览器,同时使用JQuery 1.9.1进行开发。
我曾经在这里发布了一个问题,但并未得到答案。我希望通过重新表述问题来获取答案。
以下是我在网页上显示的一张表格中的几行HTML代码。
<tr>
<td>
<label for="RoomNbr2" align="right"> Room No 2
<input type="checkbox" align="left" class="checkall" id="RoomNbr2" name="RoomNbr2">
</label>
</td>
<td>
<label for="PCNbr203" align="right"> 203
<input type="checkbox" align="left" id="PCNbr203" name="PCNbr203" class="RoomNbr2">
</label>
</td>
<td>
<label for="PCNbr204" align="right"> 204
<input type="checkbox" align="left" id="PCNbr204" name="PCNbr204" class="RoomNbr2">
</label>
</td>
</tr>
<tr>
<td>
<label for="RoomNbr3" align="right"> Room No 3
<input type="checkbox" align="left" class="checkall" id="RoomNbr3" name="RoomNbr3">
</label>
</td>
<td>
<label for="PCNbr310" align="right"> 310
<input type="checkbox" align="left" id="PCNbr310" name="PCNbr310" class="RoomNbr3">
</label>
</td>
<td>
<label for="PCNbr320" align="right"> 320
<input type="checkbox" align="left" id="PCNbr320" name="PCNbr320" class="RoomNbr3">
</label>
</td>
<td>
<label for="PCNbr340" align="right"> 340
<input type="checkbox" align="left" id="PCNbr340" name="PCNbr340" class="RoomNbr3">
</label>
</td>
<td>
<label for="PCNbr350" align="right"> 350
<input type="checkbox" align="left" id="PCNbr350" name="PCNbr350" class="RoomNbr3">
</label>
</td>
</tr>
如果用户点击“2号房间”,则会检查所有在“2号房间”内的电脑(每台电脑都被分配了“RoomNbr2”类)。同样地,如果勾选“2号房间”,然后取消勾选,“Room No 2”类别下的所有电脑也将遵循此操作。
我使用此代码来监视房间的“checkall”类:
$('#mytable').on('click','.checkall', function() {
$('input.' + this.id).prop('checked', this.checked);
});
我使用这段代码来监控表格上的单个点击:
$('#mytable').on('click', function() {
$('input.' + this.id).prop('checked', this.checked);
});
我需要做的是,在某个依赖复选框被取消勾选时,改变“2号房间”(或3号)复选框的状态。
例如:
如果我点击“2号房间”,则“2号房间”的复选框将被勾选,同时“203”和“204”的复选框也会被勾选。
如果我取消勾选“203”,则“204”的复选框应该保持勾选状态,“2号房间”的复选框要么变成未勾选状态(但不会改变“204”的复选框状态),要么变成一个不确定的状态(即不显示勾选状态)。
在任何时候,我知道哪些机器已经被勾选。
$("input[name*=PC]:checked").map(function () {return this.name;}).get().join(",")
这正是我想知道的。我只是不希望房间号复选框在所有依赖的复选框都未被选中时仍然显示为已选中状态。我找到的所有示例都是全选/全不选的形式。
如何最好解决这个问题,欢迎提出任何想法或方向。