jQuery给表格加滚动条

2026-04-01 14:50:36

1、新建html文档。

jQuery给表格加滚动条

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>

jQuery给表格加滚动条

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>

jQuery给表格加滚动条

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、查看效果。

jQuery给表格加滚动条

猜你喜欢