我找到了一个以前建议用于满足其必要需求的其他人的示例,(建议修复的演示链接)我尝试通过使用 col 标记使每个列隐藏来简化过程。然而,当我将类添加到 col 标记时,它破坏了该功能,我不知道如何修复它。
我的演示:这里
如果我理解正确,那么您只需要在th
下面添加类,
<tr>
<th class="first_name">First Name</th>
<th class="last_name">Last Name</th>
<th class="email">Email</th>
</tr>
并修改您的脚本,如下所示,
$("input:checkbox:not(:checked)").each(function() {
var column = $("." + $(this).attr("name"));
$(column).hide();
});
$("input:checkbox").click(function(){
var column = $("." + $(this).attr("name"));
$(column).toggle();
});
演示:http: //jsfiddle.net/8BahZ/400/
您似乎在切换col
标签而不是列本身。
对我来说,在 Chrome 中,一个col
标签会扩展到其他标签(thead
, th
),所以选择col
不会给你任何东西。即使你会得到它们,你也只是切换列标题。
无论如何,正如控制台告诉你的那样,你有一个语法错误——你不能;
在一个表达式中出现,因为它终止了一个语句。
可能使用更清洁的解决方案:http :nth-child
: //jsfiddle.net/8BahZ/402/。
var f = function() {
var index = $(":checkbox").index(this) + 1;
$("table > * > * > :nth-child(" + index + ")").toggle(this.checked);
};
$(":checkbox").click(f).each(f); // bind handler and run it once