我有大約30列和10至500 ish行之間的html表。我想顯示/隱藏一組列,點擊按鈕。jQuery顯示/隱藏大表性能
我試圖接近2至表的THEAD日
- 迭代,做.show()或.hide()的TH和TD。
- 遍歷表的thead th並更改類以顯示/隱藏TH和TD。
該函數實現如下代碼片段。但是,表現並不是那麼好。顯示/隱藏說20列可能需要大約5〜10秒的數據80〜120行。
我只是想知道是否有什麼我們可以做,讓它走得更快。
function ToggleHeadVisibility(showHide) {
var index = 0;
$('#' + gridViewName + ' thead th').each(function(index) {
index++;
if (showHide == "SHOW") {
/*
$('#' + gridViewName + ' th:nth-child(' + (index) + ')').show();
$('#' + gridViewName + ' td:nth-child(' + (index) + ')').show();
*/
$('#' + gridViewName + ' th:nth-child(' + (index) + ')').removeClass('columnHide');
$('#' + gridViewName + ' td:nth-child(' + (index) + ')').removeClass('columnHide');
} else if (showHide = "HIDE") {
/*
//if (showColumnArray.has($(this).get(0).innerHTML)) {
if (showColumnArray.has($(this).attr('title'))) {
$('#' + gridViewName + ' th:nth-child(' + (index) + ')').show();
$('#' + gridViewName + ' td:nth-child(' + (index) + ')').show();
}
else {
$('#' + gridViewName + ' th:nth-child(' + (index) + ')').hide();
$('#' + gridViewName + ' td:nth-child(' + (index) + ')').hide();
}
*/
if (showColumnArray.has($(this).attr('title'))) {
$('#' + gridViewName + ' th:nth-child(' + (index) + ')').removeClass('columnHide');
$('#' + gridViewName + ' td:nth-child(' + (index) + ')').removeClass('columnHide');
} else {
$('#' + gridViewName + ' th:nth-child(' + (index) + ')').addClass('columnHide');
$('#' + gridViewName + ' td:nth-child(' + (index) + ')').addClass('columnHide');
}
}
});
}
顯示/隱藏性能的一些有趣的比較 http://www.learningjquery.com/2010/05/now-you-see-me-showhide-performance – Eatdoku 2010-06-29 18:33:57