2012-08-28 46 views

回答

0

如果我理解正确的话,那么你只需要添加类的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(); 
}); 

DEMO:http://jsfiddle.net/8BahZ/400/

0

您似乎正在切换col标记,而不是列本身。

0

对于我而言,在Chrome中,col标记会展开为其他标记(thead,th),因此选择col不会为您带来任何效果。即使你会得到它们,你也只是在切换列标题。

无论如何,控制台告诉你语法错误 - 表达式中不能有;,因为它会终止语句。

更清洁的解决方案可能使用:nth-childhttp://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