tbodyプラススクロール⋯⋯ブログ園から
13214 ワード
Untitled
$(function(){
var table = $('table.scrolltable').each(function(){
var $table = $(this).css('border-collapse','collapse');
var $tbody = $table.find('tbody').eq(0);
var sbPosition = {left: $tbody.position().left + $tbody.outerWidth(), top: $tbody.position().top };
var $scrollbar = $('<div class="scrollbar"/>').css({'position':'absolute', 'overflow-y':'auto',left:sbPosition.left, top:sbPosition.top, height:'0px',width:'20px'})
.append($('<div/>'))
.appendTo($table.parent());
$table.bind('rownum',function(event, newRowNum){
//
var nFirst = parseInt($tbody.attr('itemIndex') || '0');
$tbody.find('tr').hide();
$tbody.find('tr').each(function(i){
if( i >= nFirst && i < nFirst + newRowNum)
{
$(this).show();
}
else
{
$(this).hide();
}
});
var scrollHeight = $tbody.find('tr').length * $tbody.height() / newRowNum;
var $sb = $scrollbar;
$sb.css('height',$tbody.height());
$sb.find('div').eq(0).css('height',scrollHeight);
});
$scrollbar.scroll(function(){
$sb = $(this);
var nNewIndex = Math.floor($sb.scrollTop() / $sb.attr('scrollHeight') * $tbody.find('tr').length);
var nIndex = parseInt($tbody.attr('itemIndex') || '0');
var rownum = parseInt($table.attr('rownum') || '10');
if(nIndex != nNewIndex)
{
$tbody.find('tr').each(function(i){
if(i >= nNewIndex && i < nNewIndex + rownum)
{
$(this).show();
}
else
{
$(this).hide();
}
});
$tbody.attr('itemIndex', nNewIndex);
}
});
$table.trigger('rownum',parseInt($table.attr('rownum')));
});
});
aaa
bbb
ccc
ddd
eee
fff
111
111
111
111
111
111
222
222
222
222
222
222
333
333
333
333
333
333
444
444
444
444
444
444
555
555
555
555
555
555
444
444
444
444
444
444
111
111
111
111
111
111
222
222
222
222
222
222
333
333
333
333
333
333
444
444
444
444
444
444
555
555
555
555
555
555
444
444
444
444
444
444
111
111
111
111
111
111
222
222
222
222
222
222
333
333
333
333
333
333
444
444
444
444
444
444
555
555
555
555
555
555
444
444
444
444
444
444
111
111
111
111
111
111
222
222
222
222
222
222
333
333
333
333
333
333
444
444
444
444
444
444
555
555
555
555
555
555
444
444
444
444
444
END
444
444
444
444
444
444
111
111
111
111
111
111
222
222
222
222
222
222
333
333
333
333
333
333
444
444
444
444
444
444
555
555
555
555
555
555
444
444
444
444
444
END
444
444
444
444
444
444
111
111
111
111
111
111
222
222
222
222
222
222
333
333
333
333
333
333
444
444
444
444
444
444
555
555
555
555
555
555
444
444
444
444
444
END
444
444
444
444
444
444
111
111
111
111
111
111
222
222
222
222
222
222
333
333
333
333
333
333
444
444
444
444
444
444
555
555
555
555
555
555
444
444
444
444
444
END
444
444
444
444
444
444
111
111
111
111
111
111
222
222
222
222
222
222
333
333
333
333
333
333
444
444
444
444
444
444
555
555
555
555
555
555
444
444
444
444
444
END
444
444
444
444
444
END