复选框,选择(或取消选择)其组内的所有其他复选框
jQuery: checkbox that selects (or deselects) all other checkboxes within its group
这可能不像标题所显示的那么简单。
我有一个div设置为一个自制的复选框通过类(1px边框,16px正方形,自定义图形作为复选符号应用作为背景图像)。当点击时,'checked'类被应用。很简单。示例(未选中):<div class="checkbox group1"> </div>
我还有另一个复选框(div),它是选择同一组(在本例中为group1)中的所有其他复选框的"主"。这个主机有一个特殊的类叫做"check_all":<div class="checkbox check_all group1"> </div>
所以你说"简单;当选中"check_all"时,只需选中group1中的所有框。"没那么容易。check_all是一个贯穿整个网站的通用类,所以它可以在其他页面上重复使用;我还可以将它应用到同一页面上的group2、group3等等。我需要jQuery函数来检查同一组内的所有。更复杂的是,组名不是顺序的,也不是以任何方式相关的;可以是"发票"、"cart_items"或"地址"。
我想到的事情:
1)清除master的class属性中出现的所有'checked'、'checkbox'和'check_all',并使用剩下的字符串作为组名。问题:可能有比应用于子复选框的类更多的类
2)在组名"check_all_group1"后添加"check_all_"。问题:jQuery hasclass似乎不支持通配符来执行"以…开始"来附加处理程序函数。即使是这样,您仍然必须处理类并执行字符串函数才能到达"group1"。看起来很笨拙,不理想。
3)将主div和所有子div放在父容器中。这是我提出的最接近的解决方案,但我不能保证属于其他组的其他复选框也不会在容器中。
欢迎对整个概念进行重新设计。我只需要一个简单的方法,在一个可重用的类,是附加到一个函数,将选择所有其他"复选框"元素与同一组下降。
编辑:这个解决方案必须是跨浏览器支持的(甚至是ie6.5),因为这个站点的访问者来自世界各地,可能没有最新的技术。事实上,最近对现有网站的分析显示,10%的访问者使用的是超过3年的浏览器。认为全球。
代码示例
<table>
<tr>
<td><div class="checkbox check_all delete"> </div>Delete</td>
<td><div class="checkbox check_all mark">Mark</div></td>
</tr>
<tr>
<td><div class="checkbox delete"> </div></td>
<td><div class="checkbox mark"> </div></td>
<td>Line 1</td>
</tr>
<tr>
<td><div class="checkbox delete"> </div></td>
<td><div class="checkbox mark"> </div></td>
<td>Line 2</td>
</tr>
</table>
对于这种情况,我将div与class
分组<div class="check_all" id="group1"> </div>
<div class="group1"> </div>
<div class="group1"> </div>
...
<div class="check_all" id="group2"> </div>
<div class="group2"> </div>
<div class="group2"> </div>
和jQuery与
$('.check_all').on('click',function(){
$(this).hasClass('checked')?$('.'+this.id).addClass('checked'):$('.'+this.id).removeClass('checked');
});
不如这样做:
<input type="checkbox" data-group-selector="my_group_name" class="check_all">
...
<input type="checkbox" class="my_group_name">
然后……
$('.check_all').on('click', function (e) {
var group = $(this).data('group-selector');
$('.' + group).prop('checked');
});
或
<input type="checkbox" id="select_all_my_group_name" class="check_all">
...
<input type="checkbox" class="my_group_name">
然后……
$('.check_all').on('click', function (e) {
var group = $(this).attr('id').replace('select_all_', '');
$('.' + group).prop('checked');
});
- 通过复选框选择形成填充
- jQuery根据相关复选框选择求和单元格
- 根据用户复选框选择显示或隐藏下拉框
- 复选框选择组合
- 如何根据角度中的复选框选择过滤结果
- 根据复选框选择 jQuery 更新文本框
- jquery选择复选框选择的值
- 复选框选择/取消选择触发器第一次工作,但在随后的尝试中失败
- 如何发布单选和复选框选择?表单由php和js处理
- 使用querySelectorAll进行的复选框选择不起作用
- 具有延迟的多个复选框选择以检查其他复选框更改
- 显示 jQuery 复选框选择
- 复选框选择似乎彼此不一致
- 一个变量,多个复选框选择/取消选择 jQuery
- 使用 Json 数据源在数据表中实现复选框选择
- 使用 Javascript 更新复选框选择时的输入字段
- 将复选框选择保留在多页分页中
- 在复选框选择后验证输入类型文本
- 如何根据 Javascript 中的复选框选择打开引导模式窗口
- 如何检测和获取 asp.net 中的复选框/选择框(html 标记)值