Javascript-隐藏列的复选框
Javascript - Checkboxes to hide columns
我遇到了一些JS代码的问题,这些代码根据复选框的状态隐藏列,我希望能得到一些帮助。
复选框在表格中。该表有多行。例如:
1, 2
3, 4
这些复选框对应于另一个主表中的列。主表是一行。例如:1、2、3、4
当我取消选中框1&2,则它隐藏第1&主表中的2个。但是如果我取消选中框3&4,它还隐藏行1&2.
如果表中的复选框在一行上,则它们会按预期隐藏所有列。但因为它们是通过表行分解的,所以存在一个问题。
$(function() {
$("#checkboxes input[type=checkbox]").on("change", function(e) {
var id = $(this).parent().index()+1,
col = $("#table tr th:nth-child("+id+"), #table tr td:nth-child("+id+")");
$(this).is(":checked") ? col.show() : col.hide();
}).prop("checked", true).change();
});
这是一把小提琴。任何帮助都将不胜感激。
https://jsfiddle.net/o6e3pc3a/7/
感谢
当您调用$(this).parent().index()+1
bea时,表行出现问题,因为<td>
标记在两行中,这意味着它将返回<tr>
内部的位置,并且在每个新的<tr>
中,计数再次从1开始。
您有两种解决方案:
1-您可以将所有复选框放在一行中:
<tr>
<td><input type="checkbox" name="option1" value="eventid" />Name</td>
<td><input type="checkbox" name="option2" value="groupid" />ID</td>
<td><input type="checkbox" name="option3" value="pathfile" />Type</td>
<td><input type="checkbox" name="option4" value="filesize" />Number</td>
</tr>
这里有一个例子JS Fiddle例子1
2-或者,您可以添加一个属性data-id
,其中包含列位置的值:
<tr>
<td><input type="checkbox" data-id="1" name="option1" value="eventid" />Name</td>
<td><input type="checkbox" data-id="2" name="option2" value="groupid" />ID</td>
</tr>
<tr>
<td><input type="checkbox" data-id="3" name="option3" value="pathfile" />Type</td>
<td><input type="checkbox" data-id="4" name="option4" value="filesize" />Number</td>
</tr>
然后在js中捕获:
$(function() {
$("#checkboxes input[type=checkbox]").on("change", function(e) {
var id = $(this).attr('data-id'),
col = $("#table tr th:nth-child("+id+"), #table tr td:nth-child("+id+")");
$(this).is(":checked") ? col.show() : col.hide();
}).prop("checked", true).change();
});
这里有一个例子JS Fiddle例子2
如果你不介意这一页的风格,我建议你先看一下。如果不是,第二个是更动态的
同意@joac omf
因为<chekcbox>
是<td>
标签的子代。它们不是兄弟,所以索引不正确。
索引是"不正确的",因为您将复选框拆分为两个表行
将复选框放在一行<tr>
中,它们就能正常工作。
<tr>
<td><input type="checkbox" name="option1" value="eventid" />Name</td>
<td><input type="checkbox" name="option2" value="groupid" />ID</td>
<td><input type="checkbox" name="option3" value="pathfile" />Type</td>
<td><input type="checkbox" name="option4" value="filesize" />Number</td>
</tr>
https://jsfiddle.net/o6e3pc3a/8/
相关文章:
- 显示隐藏复选框
- jquery单击隐藏的复选框
- 在jsTree中隐藏复选框
- 如何从django表单库中隐藏复选框,并使用Javascript切换其显示属性
- 基于复选框隐藏/显示表格行
- 使用jQuery切换根据选中的复选框隐藏/显示表单提交按钮 - 如何设置默认关闭的提交按钮
- 如何在 Yii javascript 中使用复选框隐藏或显示文本字段
- 根据选定的复选框隐藏/显示内容
- 如何使用复选框隐藏和显示jquery数据表中的行
- 使用复选框隐藏我的数据时出现问题
- 复选框隐藏,除非选择了下拉值
- 通过复选框隐藏/显示文本区域,这些复选框具有不同部分的相同类
- 动态复选框隐藏动态输入框
- 如何使用自定义复选框隐藏网格列
- 通过复选框隐藏表格
- JQuery数组's和输入复选框+隐藏
- 使用复选框隐藏多个表单字段
- Symfony 2.3如何通过复选框隐藏/显示图像
- 使用复选框隐藏/显示基于类别的谷歌地图标记's
- 使用 JavaScript 确定复选框 + 隐藏字段组合的值