2009-06-17 4 views
0

이 메서드는 메타 데이터 json 개체 컬렉션을 기반으로 테이블의 열을 숨기는 데 사용됩니다. 테이블에는 열당 개체가 있습니다. 현재 ~ 500 개의 행과 ~ 15 개의 열이있는 테이블에서 6이 숨겨지면이 메서드는 ~ 2 초 정도 걸립니다.JQuery를 사용하여 테이블 열 숨기기

더 빠르게 최적화하려고합니다. 어떤 제안?

function hideHiddenColumns() { 
    if (tableMetaData.length) { 
    for (var index = 0; index < tableMetaData.length; index++) { 
     var item = tableMetaData[index]; 
     if (!item.DisplayFlag) { 
     $table.find('th:nth-child(' + (index + 1) + '), td:nth-child(' + (index + 1) + ')').hide(); 
     } 
    } 
    } 
} 

답변

2

나는 $table이 어디에서 오는지 모르겠지만, 방법 대신 복잡한 jQuery를 선택의 좋은 오래된 DOM에 대한 :

$table.each(function() { 
    var rows = this.rows; 
    var rowCount = rows.length; 

    for (var i = 0; i < rowCount; i++) { 
    var cells = rows[i].cells; 
    if (cells.length > index) { 
     $(cells[index]).hide(); 
    } 
    } 
}); 

분명히이 더 병합 된 셀이 테이블에 존재하지 않는 것을 의미한다.

2

Tomalak이 제안한대로 일반 JS, jsust로 이동하십시오. 또한 while으로 for 루프를 최적화 할 수 있습니다

var item, i = tableMetaData.length; 
while (i--) { 
    item = tableMetaData[i]; 
    // do what's gotta be done 
} 

까지 가장 빠른 루프 구조에 의해로 사용되는 반전 while 루프. 최신 JS 엔진의 최근 개선으로 차이는 더 이상 크지 않습니다.

관련 문제