改版自:Jquery插件 -- 表格固定表头 - 纯粹的郭子 - 博客园
先上效果图:
<!DOCTYPE html> <html> <head> <title> New Document </title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="jquery.ScrollTable.js"></script> <script type="text/javascript"> $(function(){ $(".tbl").ScrollTable({ MaxHeight:300 }); }); </script> <style> .tbl{ border-collapse:collapse; font-size:14px; } .tbl th{ height:25px; line-height:25px; } .tbl td{ text-align:center; height:25px; line-height:25px; } .ScrollTableContainer{ border:1px solid #000;border-top:none;border-left:none; } .ScrollDiv{ margin-top:-1px; overflow-y:scroll; } </style> </head> <body> <table class="tbl" width="800" border="1" align="center" cellpadding="0" cellspacing="0"> <thead> <tr> <th>标题1</th> <th>标题2</th> <th>标题3</th> <th>标题4</th> <th>标题5</th> <th>标题6</th> </tr> </thead> <tbody> <tr> <td>data1</td> <td>data2</td> <td>data3</td> <td>data4</td> <td>data5</td> <td>data6</td> </tr> <tr> <td>data1</td> <td>data2</td> <td>data3</td> <td>data4</td> <td>data5</td> <td>data6</td> </tr> <tr> <td>data1</td> <td>data2</td> <td>data3</td> <td>data4</td> <td>data5</td> <td>data6</td> </tr> <tr> <td>data1</td> <td>data2</td> <td>data3</td> <td>data4</td> <td>data5</td> <td>data6</td> </tr> <tr> <td>data1</td> <td>data2</td> <td>data3</td> <td>data4</td> <td>data5</td> <td>data6</td> </tr> <tr> <td>data1</td> <td>data2</td> <td>data3</td> <td>data4</td> <td>data5</td> <td>data6</td> </tr> <tr> <td>data1</td> <td>data2</td> <td>data3</td> <td>data4</td> <td>data5</td> <td>data6</td> </tr> <tr> <td>data1</td> <td>data2</td> <td>data3</td> <td>data4</td> <td>data5</td> <td>data6</td> </tr> <tr> <td>data1</td> <td>data2</td> <td>data3</td> <td>data4</td> <td>data5</td> <td>data6</td> </tr> <tr> <td>data1</td> <td>data2</td> <td>data3</td> <td>data4</td> <td>data5</td> <td>data6</td> </tr> <tr> <td>data1</td> <td>data2</td> <td>data3</td> <td>data4</td> <td>data5</td> <td>data6</td> </tr> <tr> <td>data1</td> <td>data2</td> <td>data3</td> <td>data4</td> <td>data5</td> <td>data6</td> </tr> <tr> <td>data1</td> <td>data2</td> <td>data3</td> <td>data4</td> <td>data5</td> <td>data6</td> </tr> <tr> <td>data1</td> <td>data2</td> <td>data3</td> <td>data4</td> <td>data5</td> <td>data6</td> </tr> <tr> <td>data1</td> <td>data2</td> <td>data3</td> <td>data4</td> <td>data5</td> <td>data6</td> </tr> <tr> <td>data1</td> <td>data2</td> <td>data3</td> <td>data4</td> <td>data5</td> <td>data6</td> </tr> <tr> <td>data1</td> <td>data2</td> <td>data3</td> <td>data4</td> <td>data5</td> <td>data6</td> </tr> <tr> <td>data1</td> <td>data2</td> <td>data3</td> <td>data4</td> <td>data5</td> <td>data6</td> </tr> <tr> <td>data1</td> <td>data2</td> <td>data3</td> <td>data4</td> <td>data5</td> <td>data6</td> </tr> <tr> <td>data1</td> <td>data2</td> <td>data3</td> <td>data4</td> <td>data5</td> <td>data6</td> </tr> <tr> <td>data1</td> <td>data2</td> <td>data3</td> <td>data4</td> <td>data5</td> <td>data6</td> </tr> <tr> <td>data1</td> <td>data2</td> <td>data3</td> <td>data4</td> <td>data5</td> <td>data6</td> </tr> <tr> <td>data1</td> <td>data2</td> <td>data3</td> <td>data4</td> <td>data5</td> <td>data6</td> </tr> <tr> <td>data1</td> <td>data2</td> <td>data3</td> <td>data4</td> <td>data5</td> <td>data6</td> </tr> <tr> <td>data1</td> <td>data2</td> <td>data3</td> <td>data4</td> <td>data5</td> <td>data6</td> </tr> <tr> <td>data1</td> <td>data2</td> <td>data3</td> <td>data4</td> <td>data5</td> <td>data6</td> </tr> <tr> <td>data1</td> <td>data2</td> <td>data3</td> <td>data4</td> <td>data5</td> <td>data6</td> </tr> <tr> <td>data1</td> <td>data2</td> <td>data3</td> <td>data4</td> <td>data5</td> <td>data6</td> </tr> <tr> <td>data1</td> <td>data2</td> <td>data3</td> <td>data4</td> <td>data5</td> <td>data6</td> </tr> <tr> <td>data1</td> <td>data2</td> <td>data3</td> <td>data4</td> <td>data5</td> <td>data6</td> </tr> <tr> <td>data1</td> <td>data2</td> <td>data3</td> <td>data4</td> <td>data5</td> <td>data6</td> </tr> <tr> <td>data1</td> <td>data2</td> <td>data3</td> <td>data4</td> <td>data5</td> <td>data6</td> </tr> <tr> <td>data1</td> <td>data2</td> <td>data3</td> <td>data4</td> <td>data5</td> <td>data6</td> </tr> <tr> <td>data1</td> <td>data2</td> <td>data3</td> <td>data4</td> <td>data5</td> <td>data6</td> </tr> <tr> <td>data1</td> <td>data2</td> <td>data3</td> <td>data4</td> <td>data5</td> <td>data6</td> </tr> <tr> <td>data1</td> <td>data2</td> <td>data3</td> <td>data4</td> <td>data5</td> <td>data6</td> </tr> <tr> <td>data1</td> <td>data2</td> <td>data3</td> <td>data4</td> <td>data5</td> <td>data6</td> </tr> <tr> <td>data1</td> <td>data2</td> <td>data3</td> <td>data4</td> <td>data5</td> <td>data6</td> </tr> <tr> <td>data1</td> <td>data2</td> <td>data3</td> <td>data4</td> <td>data5</td> <td>data6</td> </tr> <tr> <td>data1</td> <td>data2</td> <td>data3</td> <td>data4</td> <td>data5</td> <td>data6</td> </tr> <tr> <td>data1</td> <td>data2</td> <td>data3</td> <td>data4</td> <td>data5</td> <td>data6</td> </tr> <tr> <td>data1</td> <td>data2</td> <td>data3</td> <td>data4</td> <td>data5</td> <td>data6</td> </tr> <tr> <td>data1</td> <td>data2</td> <td>data3</td> <td>data4</td> <td>data5</td> <td>data6</td> </tr> <tr> <td>data1</td> <td>data2</td> <td>data3</td> <td>data4</td> <td>data5</td> <td>data6</td> </tr> <tr> <td>data1</td> <td>data2</td> <td>data3</td> <td>data4</td> <td>data5</td> <td>data6</td> </tr> <tr> <td>data1</td> <td>data2</td> <td>data3</td> <td>data4</td> <td>data5</td> <td>data6</td> </tr> <tr> <td>data1</td> <td>data2</td> <td>data3</td> <td>data4</td> <td>data5</td> <td>data6</td> </tr> <tr> <td>data1</td> <td>data2</td> <td>data3</td> <td>data4</td> <td>data5</td> <td>data6</td> </tr> </tbody> </table> </body> </html>
(function ($) { $.fn.extend({ ScrollTable: function (options) { var defaults = { MaxHeight: 200 }; options = $.extend(defaults, options); return this.each(function () { var $this = $(this); // 克隆表头部分和身体部分 var $cloneTableHeader = $this.find("thead").clone(); var $cloneTableBody = $this.find("tbody").clone(); $cloneTableHeader.find("tr").append("<td style=\"width:18px\"></td>"); var $newHeader = $("<table class=\"tbl\" border=\"1\" cellpadding=\"0\" cellspacing=\"0\"></table>"); var $newBody = $("<table class=\"tbl\" border=\"1\" cellpadding=\"0\" cellspacing=\"0\"></table>"); $newHeader.append($cloneTableHeader); $newBody.append($cloneTableBody); // 将产生的表头和身体部分放入Container,并做一些微调 $this.after("<div class='ScrollTableContainer'></div>"); $this.next().append($newHeader); $this.next().append("<div class='ScrollDiv'></div>"); $this.next().css("width", $this.width() + 18); $newHeader.css("width", $this.width() + 19); $newBody.css("width", $this.width()); $this.next().find("div.ScrollDiv").css({ "max-height": options.MaxHeight, "width": $this.width() + 17 }); $this.next().find("div.ScrollDiv").append($newBody); $this.remove(); }); } }); })(jQuery);