jQuery给表格加滚动条
1、新建html文档。

2、书写html。
<div class="demo">
<table cellspacing="0" cellpadding="0" id="thetable">
<thead>
<tr>
<td>城市</td>
<td>状态代码</td>
<td>zip</td>
<td>纬度</td>
<td>经度</td>
<td>县</td>
</tr>
</thead>
<tbody>
<tr class="first">
<td>中国</td>
<td>NY</td>
<td>00501</td>
<td>40.8152</td>
<td>-73.0455</td>
<td>Suffolk</td>
</tr>
<tr>
<td>中国</td>
<td>NY</td>
<td>00544</td>
<td>40.8152</td>
<td>-73.0455</td>
<td>Suffolk</td>
</tr>
<tr>
<td>韩国</td>
<td>PR</td>
<td>00601</td>
<td>18.1788</td>
<td>-66.7516</td>
<td>韩国</td>
</tr>
<tr>
<td>Aguada</td>
<td>PR</td>
<td>00602</td>
<td>18.381389</td>
<td>-67.188611</td>
<td>Aguada</td>
</tr>
<tr>
<td>Aguadilla</td>
<td>PR</td>
<td>00603</td>
<td>18.4554</td>
<td>-67.1308</td>
<td>Aguadilla</td>
</tr>
<tr>
<td>Aguadilla</td>
<td>PR</td>
<td>00604</td>
<td>18.4812</td>
<td>-67.1467</td>
<td>Aguadilla</td>
</tr>
<tr>
<td>Aguadilla</td>
<td>PR</td>
<td>00605</td>
<td>18.429444</td>
<td>-67.154444</td>
<td>Aguadilla</td>
</tr>
<tr>
<td>Maricao</td>
<td>PR</td>
<td>00606</td>
<td>18.182778</td>
<td>-66.980278</td>
<td>Maricao</td>
</tr>
<tr>
<td>Anasco</td>
<td>PR</td>
<td>00610</td>
<td>18.284722</td>
<td>-67.14</td>
<td>Anasco</td>
</tr>
<tr>
<td>Angeles</td>
<td>PR</td>
<td>00611</td>
<td>18.286944</td>
<td>-66.799722</td>
<td>Utuado</td>
</tr>
<tr>
<td>Arecibo</td>
<td>PR</td>
<td>00612</td>
<td>18.4389</td>
<td>-66.6924</td>
<td>Arecibo</td>
</tr>
<tr>
<td>Arecibo</td>
<td>PR</td>
<td>00613</td>
<td>18.1399</td>
<td>-66.6344</td>
<td>Arecibo</td>
</tr>
<tr>
<td>Arecibo</td>
<td>PR</td>
<td>00614</td>
<td>18.1399</td>
<td>-66.6344</td>
<td>Arecibo</td>
</tr>
<tr>
<td>Bajadero</td>
<td>PR</td>
<td>00616</td>
<td>18.428611</td>
<td>-66.683611</td>
<td>Arecibo</td>
</tr>
<tr>
<td>Barceloneta</td>
<td>PR</td>
<td>00617</td>
<td>18.4525</td>
<td>-66.538889</td>
<td>Barceloneta</td>
</tr>
</tbody>
<tfoot>
<tr>
<td>10</td>
<td>2</td>
<td>15</td>
<td align="center">-</td>
<td align="center">-</td>
<td>9</td>
</tr>
</tfoot>
</table>
</div>
3、书写css样式。
<style type="text/css">
*{margin:0;padding:0;list-style-type:none;}
a,img{border:0;}
body{font:12px/180% Arial, Helvetica, sans-serif, "新宋体";}
.demo{width:500px;margin:40px auto 0 auto;}
/* tablescroll */
.tablescroll{font:12px normal Tahoma, Geneva, "Helvetica Neue", Helvetica, Arial, sans-serif;background-color:#fff;}
.tablescroll td,.tablescroll_wrapper,.tablescroll_head,.tablescroll_foot{border:1px solid #ccc;}
.tablescroll td{padding:5px;}
.tablescroll_wrapper{border-left:0;}
.tablescroll_head{font-size:12px;font-weight:bold;background-color:#eee;border-left:0;border-top:0;margin-bottom:3px;}
.tablescroll thead td{border-right:0;border-bottom:0;}
.tablescroll tbody td{border-right:0;border-bottom:0;}
.tablescroll tbody tr.first td{border-top:0;}
.tablescroll_foot{font-weight:bold;background-color:#eee;border-left:0;border-top:0;margin-top:3px;}
.tablescroll tfoot td{border-right:0;border-bottom:0;}
</style>

4、书写js并引用js。
<script type="text/javascript" src="js/jquery.1.4.2-min.js"></script>
<script type="text/javascript" src="js/jquery.tablescroll.js"></script>
<script type="text/javascript">
$(document).ready(function($){
$('#thetable').tableScroll({
width:480,
height:150
});
});
</script>

5、书写tablescroll.js。
;(function($){
var scrollbarWidth = 0;
function getScrollbarWidth()
{
if (scrollbarWidth) return scrollbarWidth;
var div = $('<div style="width:50px;height:50px;overflow:hidden;position:absolute;top:-200px;left:-200px;"><div style="height:100px;"></div></div>');
$('body').append(div);
var w1 = $('div', div).innerWidth();
div.css('overflow-y', 'auto');
var w2 = $('div', div).innerWidth();
$(div).remove();
scrollbarWidth = (w1 - w2);
return scrollbarWidth;
}
$.fn.tableScroll = function(options)
{
if (options == 'undo')
{
var container = $(this).parent().parent();
container.find('.tablescroll_head thead').prependTo(this);
container.find('.tablescroll_foot tfoot').appendTo(this);
container.before(this);
container.empty();
return;
}
var settings = $.extend({},$.fn.tableScroll.defaults,options);
settings.scrollbarWidth = getScrollbarWidth();
this.each(function()
{
var flush = settings.flush;
var tb = $(this).addClass('tablescroll_body');
var wrapper = $('<div class="tablescroll_wrapper"></div>').insertBefore(tb).append(tb);
if (!wrapper.parent('div').hasClass(settings.containerClass)) {
$('<div></div>').addClass(settings.containerClass).insertBefore(wrapper).append(wrapper);
}
var width = settings.width ? settings.width : tb.outerWidth();
wrapper.css
({
'width': width+'px',
'height': settings.height+'px',
'overflow-y': 'auto',
'overflow-x': 'hidden'
});
tb.css('width',width+'px');
var wrapper_width = wrapper.outerWidth();
var diff = wrapper_width-width;
wrapper.css({width:((width-diff)+settings.scrollbarWidth)+'px'});
tb.css('width',(width-diff)+'px');
if (tb.outerHeight() <= settings.height)
{
wrapper.css({height:'auto',width:(width-diff)+'px'});
flush = false;
}
var has_thead = $('thead',tb).length ? true : false ;
var has_tfoot = $('tfoot',tb).length ? true : false ;
var thead_tr_first = $('thead tr:first',tb);
var tbody_tr_first = $('tbody tr:first',tb);
var tfoot_tr_first = $('tfoot tr:first',tb);
var w = 0;
$('th, td',thead_tr_first).each(function(i)
{
w = $(this).width();
$('th:eq('+i+'), td:eq('+i+')',thead_tr_first).css('width',w+'px');
$('th:eq('+i+'), td:eq('+i+')',tbody_tr_first).css('width',w+'px');
if (has_tfoot) $('th:eq('+i+'), td:eq('+i+')',tfoot_tr_first).css('width',w+'px');
});
if (has_thead)
{
var tbh = $('<table class="tablescroll_head" cellspacing="0"></table>').insertBefore(wrapper).prepend($('thead',tb));
}
if (has_tfoot)
{
var tbf = $('<table class="tablescroll_foot" cellspacing="0"></table>').insertAfter(wrapper).prepend($('tfoot',tb));
}
if (tbh != undefined)
{
tbh.css('width',width+'px');
if (flush)
{
$('tr:first th:last, tr:first td:last',tbh).css('width',(w+settings.scrollbarWidth)+'px');
tbh.css('width',wrapper.outerWidth() + 'px');
}
}
if (tbf != undefined)
{
tbf.css('width',width+'px');
if (flush)
{
$('tr:first th:last, tr:first td:last',tbf).css('width',(w+settings.scrollbarWidth)+'px');
tbf.css('width',wrapper.outerWidth() + 'px');
}
}
});
return this;
};
$.fn.tableScroll.defaults =
{
flush: true, // makes the last thead and tbody column flush with the scrollbar
width: null, // width of the table (head, body and foot), null defaults to the tables natural width
height: 100, // height of the scrollable area
containerClass: 'tablescroll' // the plugin wraps the table in a div with this css class
};
})(jQuery);
6、查看效果。
