我有一個有27列和5到100行的大桌子。 我有模式切換(複選框),將表格的視圖從前5列(簡單)切換到27列(專家)並返回。更快地添加和刪除表上的類的方法?
目前我使用下面的jQuery方法的模式之間切換:
$("#ToggleTableCells").click(function(){
if($(this).is(':checked')){
$(".hiddencells").removeClass("hiddencells").addClass("showcells");
}else{
$(".showcells").removeClass("showcells").addClass("hiddencells");
}
});
如果表中有大量是越來越有一段時間切換前行。有沒有更快的方法來替換類。或者讓上面的代碼更快?
用css GT法部分工作,但切換回隱藏了所有錶行:
$("#toggleTableCells").change(function() {
if(this.checked){
$("#Table tr td:gt(4), #Table tr th:gt(4)").show();
}else{
$("#Table tr td:gt(4), #Table tr th:gt(4)").hide();
}
});
尼克的第一個答案似乎是最好的解決辦法:
$("#ToggleTableCells").change(function(){
if(this.checked){
$(".hiddencells").toggleClass("hiddencells showcells");
}else{
$(".showcells").toggleClass("showcells hiddencells");
}
});
即使我努力相結合尼克和尼基塔的答案並沒有導致速度明顯增加。
最終的解決方案:
var cells = $();
$("#Table tr").each(function() { cells = cells.add($(this).children(":gt(4)")); });
$("#ToggleTableCells").change(function(){
cells.toggle(this.checked);
});
這似乎有點提高了速度。我可以嘗試任何其他選項。我試過使用CSS nth-child選擇器。但它只能隱藏一列。而不是5> 27. – Plippie 2010-10-18 10:15:47
@Plippie - 嘗試更新的第二個選項與緩存選擇器,應該給你一個公平的速度提升。 – 2010-10-18 10:21:03
@Nick - 它切換它,但切換回隱藏除前5個標題以外的所有行和列。 也許可以使用:var cells = $(「#table tr」)。children(); 並在第一個代碼中使用緩存的單元格? – Plippie 2010-10-18 10:29:52