【发布时间】:2015-04-23 05:43:47
【问题描述】:
我有一些动态生成的表,每个看起来都像这样,带有一个动态 ID
<table class="innerDatTable" id="dynamically-generated'>
<caption><h2>Project #</h2></caption>
<thead>
<tr>
<th></th>
<th>SubProject Name</th>
<th>Date Completed</th>
</tr>
</thead>
<tbody>
<tr>
<td><input type="checkbox" /></td>
<td><span>SubProjectName</span></td>
<td><span>Date</span></td>
</tr>
</tbody>
</table>
当用户点击表格中的任何复选框时,应该禁用该表格中非的所有其他复选框(因此他们只能从同一项目中选择子项目)。反之亦然,如果用户取消选中表格中的所有框,则所有复选框再次变为可用。 我尝试过这样的事情......
if ($('table input:checked').length > 0) {
checked = $(this).prop('checked');
($('table input[type=checkbox]').attr('id').not($(this).attr('id')))
.prop('disabled', checked);
}
这里的逻辑是,如果在表格中选中了任何复选框,则禁用所有其他与该表格不具有相同 ID 的复选框(同样,事先不知道 ID)。我主要遵循question 中的答案并尝试根据我的需要进行更改,但我无法获得预期的效果(或任何效果,就此而言)。
我是否需要将所有其他表 ID 放入一个数组中,并在循环中禁用它们中的每一个?有人可以在语法或更好的逻辑方面指出我正确的方向吗?
【问题讨论】:
-
禁用输入并不会取消选中它,只是让您知道。