Excel에서와 같이 html로 "freezepane"기능을 모방 한 다음 스크립트가 있습니다. 머리글은 사용자가 결과 테이블을 스크롤 할 때 모두 스크롤됩니다.
fnAdjustTable=function(){
var colCount=$('#firstTr>td').length; //get total number of column
var m=0;
var n=0;
var brow='mozilla';
jQuery.each(jQuery.browser, function(i, val) {
if(val==true){
brow=i.toString();
}
});
$('.tableHeader').each(function(i){
if(m<colCount){
if(brow=='mozilla'){
$('#firstTd').css("width",$('.tableFirstCol').innerWidth());//for adjusting first td
$(this).css('width',$('#table_div td:eq('+m+')').innerWidth());//for assigning width to table Header div
}
else if(brow=='msie'){
$('#firstTd').css("width",$('.tableFirstCol').width());
$(this).css('width',$('#table_div td:eq('+m+')').width());//In IE there is difference of 2 px
}
}
m++;
});
$('.tableFirstCol').each(function(i){
if(brow=='mozilla'){
$(this).css('height',$('#table_div td:eq('+colCount*n+')').outerHeight()-1);//for providing height using scrollable table column height
}else if(brow=='msie'){
$(this).css('height',$('#table_div td:eq('+colCount*n+')').innerHeight());
}else{
$(this).css('height',$('#table_div td:eq('+colCount*n+')').height());
}
n++;
});
}
fnScroll=function(){
$('#divHeader').scrollLeft($('#table_div').scrollLeft());
$('#firstcol').scrollTop($('#table_div').scrollTop());
}
문제는 "tableFirstCol"TDS를 반복 할 때, 오류가 스크립트 팝업 실행을 중지하는 것입니다. 이 작업을 수행하는 좀 더 효율적인 방법이 있습니까?
기본적으로 스크립트는 첫 번째 행/열의 너비와 일치하도록 각 상단 머리글과 사이드 창 크기를 조정합니다. 큰 기간 (사이드 헤더)으로 리포트를 실행하면 일반적으로 30 개가 넘는 사이드 헤더 행이있을 때 스크립트가 팝업됩니다.
도움을 주셨습니다.
IE8의 프로파일 러를 사용하면 오래 걸리는 부분을 찾을 수 있습니다. 내 생각 엔 헤더의 크기를 조정하여 발생하는 리플 로우입니다.이 경우 문서 외부에서 크기를 조정해야합니다. 테이블 노드를 복제하고이를 대체하거나 html 문자열을 사용하십시오. – Hemlock
@Hemlock을 사용하거나 ['detach()'] (http://api.jquery.com/detach/)를 사용하고 다시'add()'합니다. –
David, 메서드의 시작 부분에서 분리를 수행 한 다음 해당 div에 다시 추가하기 위해 "추가"또는 "추가"를 수행합니까? 이 시도하고 크기 조정/etc 발생하지 않습니다. 여기서 무슨 일이 일어나고 있는지 알아 내려고 노력 중입니다. – AAFR