Tengo una tabla html con alrededor de 30 columnas y entre 10 y 500 filas ish. Me gustaría mostrar/ocultar un conjunto de columnas o hacer clic con el botón.jQuery show/hide column en el rendimiento de la gran tabla
He tratado 2 se aproxima a
- iterar a través de la culata en T º de mesa y hacer .show() o .hide() en el TH y TD.
- iterar a través de la tabla thad y cambiar la clase para mostrar/ocultar el TH y TD.
la función se implementa como el siguiente fragmento. Sin embargo, el rendimiento no es tan bueno. Mostrar/Ocultar decir 20 columnas toma alrededor de 5 ~ 10 segundos en tal vez 80 ~ 120 filas de datos.
me pregunto si hay algo que podamos hacer para que sea más rápido.
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');
}
}
});
}
una comparación interesante en el rendimiento de mostrar/ocultar http://www.learningjquery.com/2010/05/now-you-see-me-showhide-performance – Eatdoku