基于jquery的固定表头和列头的代码

代码如下:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.1.min.js"></script>
<script type="text/javascript">// <![CDATA[
function FixTable(TableID, FixColumnNumber, width, height) {
/// <summary>
/// 锁定表头和列
/// <para> sorex.cnblogs.com </para>
/// </summary>
/// <param name="TableID" type="String">
/// 要锁定的Table的ID
/// </param>
/// <param name="FixColumnNumber" type="Number">
/// 要锁定列的个数
/// </param>
/// <param name="width" type="Number">
/// 显示的宽度
/// </param>
/// <param name="height" type="Number">
/// 显示的高度
/// </param>
if ($("#" + TableID + "_tableLayout").length != 0) {
$("#" + TableID + "_tableLayout").before($("#" + TableID));
$("#" + TableID + "_tableLayout").empty();
}
else {
$("#" + TableID).after("<div id='" + TableID + "_tableLayout' style='overflow:hidden;height:" + height + "px; width:" + width + "px;'></div>");
}
$('<div id="' + TableID + '_tableFix"></div>'
+ '<div id="' + TableID + '_tableHead"></div>'
+ '<div id="' + TableID + '_tableColumn"></div>'
+ '<div id="' + TableID + '_tableData"></div>').appendTo("#" + TableID + "_tableLayout");
var oldtable = $("#" + TableID);
var tableFixClone = oldtable.clone(true);
tableFixClone.attr("id", TableID + "_tableFixClone");
$("#" + TableID + "_tableFix").append(tableFixClone);
var tableHeadClone = oldtable.clone(true);
tableHeadClone.attr("id", TableID + "_tableHeadClone");
$("#" + TableID + "_tableHead").append(tableHeadClone);
var tableColumnClone = oldtable.clone(true);
tableColumnClone.attr("id", TableID + "_tableColumnClone");
$("#" + TableID + "_tableColumn").append(tableColumnClone);
$("#" + TableID + "_tableData").append(oldtable);
$("#" + TableID + "_tableLayout table").each(function () {
$(this).css("margin", "0");
});
var HeadHeight = $("#" + TableID + "_tableHead thead").height();
HeadHeight += 2;
$("#" + TableID + "_tableHead").css("height", HeadHeight);
$("#" + TableID + "_tableFix").css("height", HeadHeight);
var ColumnsWidth = 0;
var ColumnsNumber = 0;
$("#" + TableID + "_tableColumn tr:last td:lt(" + FixColumnNumber + ")").each(function () {
ColumnsWidth += $(this).outerWidth(true);
ColumnsNumber++;
});
ColumnsWidth += 2;
if ($.browser.msie) {
switch ($.browser.version) {
case "7.0":
if (ColumnsNumber >= 3) ColumnsWidth--;
break;
case "8.0":
if (ColumnsNumber >= 2) ColumnsWidth--;
break;
}
}
$("#" + TableID + "_tableColumn").css("width", ColumnsWidth);
$("#" + TableID + "_tableFix").css("width", ColumnsWidth);
$("#" + TableID + "_tableData").scroll(function () {
$("#" + TableID + "_tableHead").scrollLeft($("#" + TableID + "_tableData").scrollLeft());
$("#" + TableID + "_tableColumn").scrollTop($("#" + TableID + "_tableData").scrollTop());
});
$("#" + TableID + "_tableFix").css({ "overflow": "hidden", "position": "relative", "z-index": "50", "background-color": "Silver" });
$("#" + TableID + "_tableHead").css({ "overflow": "hidden", "width": width - 17, "position": "relative", "z-index": "45", "background-color": "Silver" });
$("#" + TableID + "_tableColumn").css({ "overflow": "hidden", "height": height - 17, "position": "relative", "z-index": "40", "background-color": "Silver" });
$("#" + TableID + "_tableData").css({ "overflow": "scroll", "width": width, "height": height, "position": "relative", "z-index": "35" });
if ($("#" + TableID + "_tableHead").width() > $("#" + TableID + "_tableFix table").width()) {
$("#" + TableID + "_tableHead").css("width", $("#" + TableID + "_tableFix table").width());
$("#" + TableID + "_tableData").css("width", $("#" + TableID + "_tableFix table").width() + 17);
}
if ($("#" + TableID + "_tableColumn").height() > $("#" + TableID + "_tableColumn table").height()) {
$("#" + TableID + "_tableColumn").css("height", $("#" + TableID + "_tableColumn table").height());
$("#" + TableID + "_tableData").css("height", $("#" + TableID + "_tableColumn table").height() + 17);
}
$("#" + TableID + "_tableFix").offset($("#" + TableID + "_tableLayout").offset());
$("#" + TableID + "_tableHead").offset($("#" + TableID + "_tableLayout").offset());
$("#" + TableID + "_tableColumn").offset($("#" + TableID + "_tableLayout").offset());
$("#" + TableID + "_tableData").offset($("#" + TableID + "_tableLayout").offset());
}
$(document).ready(function () {
FixTable("MyTable", 2, 600, 200);
});
// ]]></script>
<style><!--
.style1
{
width: 137px;
}
#MyTable
{
border-top: 1px solid #cc0000;
border-left: 1px solid #cc0000;
}
#MyTable td,th
{ border-bottom:1px solid #cc0000;
border-right: 1px solid #cc0000;
}

--></style>
<p><br /> </p>
<table id="MyTable" style="border-bottom-color: black; border-top-color: black; width: 1000px; height: 200px; color: #000000; border-right-color: black; font-size: medium; border-left-color: #15b0e1;" border="0" cellspacing="0" cellpadding="0">
<thead>
<tr><th style="text-align: center; width: 80px;" rowspan="2"> </th><th class="style1" style="text-align: center;" rowspan="2">项目</th><th style="text-align: center; width: 80px;" rowspan="2">公示栏</th><th style="text-align: center;" colspan="9">dddddddd</th><th style="text-align: center;" rowspan="2" colspan="2"> 总分 </th></tr>
<tr id="game"><th style="text-align: center;" colspan="2">语文 数学 </th><th style="text-align: center;" colspan="2">英语 政治 </th><th style="text-align: center;" colspan="2">历史 地理 </th><th style="text-align: center;" colspan="2">物理 化学 </th><th style="text-align: center; width: 80px;">生物 </th></tr>
</thead>
<tbody><!-- 数据行 -->
<tr>
<td> </td>
<td class="style1"> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>ss </td>
<td class="style1">上线时间 </td>
<td>1 </td>
<td>29 1</td>
<td>25 2</td>
<td>146 </td>
<td>28 </td>
<td>79 </td>
<td>73 </td>
<td>47 </td>
<td>8 </td>
<td>91 33</td>
<td>526 qq</td>
<td>dd</td>
</tr>
<tr>
<td> </td>
<td class="style1">在线人数 </td>
<td>2 </td>
<td>29 </td>
<td>25 </td>
<td>146 </td>
<td>28 </td>
<td>79 </td>
<td>73 </td>
<td>47 </td>
<td>8 </td>
<td>91 </td>
<td>526 </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td class="style1">学生32 </td>
<td>班级1 </td>
<td>29 </td>
<td>25 </td>
<td>146 </td>
<td>28 </td>
<td>79 </td>
<td>73 </td>
<td>47 </td>
<td>8 </td>
<td>91 </td>
<td>526 </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td class="style1">学生32 </td>
<td>班级1 </td>
<td>29 </td>
<td>25 </td>
<td>146 </td>
<td>28 </td>
<td>79 </td>
<td>73 </td>
<td>47 </td>
<td>8 </td>
<td>91 </td>
<td>526 </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td class="style1">学生32 </td>
<td>班级1 </td>
<td>29 </td>
<td>25 </td>
<td>146 </td>
<td>28 </td>
<td>79 </td>
<td>73 </td>
<td>47 </td>
<td>8 </td>
<td>91 </td>
<td>526 </td>
<td> </td>
</tr>
<tr>
<td>s</td>
<td class="style1">学生32 </td>
<td>班级1 </td>
<td>29 </td>
<td>25 </td>
<td>146 </td>
<td>28 </td>
<td>79 </td>
<td>73 </td>
<td>47 </td>
<td>8 </td>
<td>91 </td>
<td>526 </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td class="style1">学生32 </td>
<td>班级1 </td>
<td>29 </td>
<td>25 </td>
<td>146 </td>
<td>28 </td>
<td>79 </td>
<td>73 </td>
<td>47 </td>
<td>8 </td>
<td>91 </td>
<td>526 </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td class="style1">学生32 </td>
<td>班级1 </td>
<td>29 </td>
<td>25 </td>
<td>146 </td>
<td>28 </td>
<td>79 </td>
<td>73 </td>
<td>47 </td>
<td>8 </td>
<td>91 </td>
<td>526 </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td class="style1">学生32 </td>
<td>班级1 </td>
<td>29 </td>
<td>25 </td>
<td>146 </td>
<td>28 </td>
<td>79 </td>
<td>73 </td>
<td>47 </td>
<td>8 </td>
<td>91 </td>
<td>526 </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td class="style1">学生32 </td>
<td>班级1 </td>
<td>29 </td>
<td>25 </td>
<td>146 </td>
<td>28 </td>
<td>79 </td>
<td>73 </td>
<td>47 </td>
<td>8 </td>
<td>91 </td>
<td>526 </td>
<td> </td>
</tr>
</tbody>
</table>
<p> </p>

(0)

相关推荐

  • jQuery实现冻结表头的方法

    本文实例讲述了jQuery实现冻结表头的方法.分享给大家供大家参考.具体如下: 前段时间做项目时候由于需要显示一个列表,但是由于数据太多在滚动的时候表头必须冻结住,所以就写了下面这个脚本(曾经在网上也找过相应的脚本,但是不怎么理想所以就自己写了,但是目前由于项目仅仅用到了表头的冻结,而不需要指定列冻结所以目前只能算个不完整的脚本,不过一般的仅仅需要表头冻结就可以使用了),现在先看看截图: 这样实现了表头的冻结,下面表体内容可以自由滚动 看下代码: 复制代码 代码如下: //为jquery扩展一个

  • 基于jquery的表头固定的若干方法

    A:使用JQuery UI插件,用DIV替换table,overflow-y:hidden达到滚动,让 thead绝对定位达到固定的目的,方法如下: 复制代码 代码如下: (function($){ $.chromatable = { defaults: { width: "900px", height: "300px", scrolling: "yes" } }; $.fn.chromatable = function(options){ va

  • jQuery中关于ScrollableGridPlugin.js(固定表头)插件的使用逐步解析

    这个ScrollableGridPlugin.js是从网上找到的一个具有固定表头效果的插件,使用起来灰常的简便,而且效果也是看着不错的.不过毕竟不是量身定做的,所以有的地方在自己的项目中还是要进行一点点小改动,因为实在是太喜欢这个插件了,所以第一次进到里面,看看原作者的思路和写法,然后才能知道如何去改成适合自己项目. 对于js我完全是一个非常业余的选手,下面根据自己的现状对这个插件做了分析,反正自己是搞明白怎么回事了,有分析不对的,还请高手指教. /*! * This plug-in is de

  • jQuery实现的表头固定效果实例【附完整demo源码下载】

    本文实例讲述了jQuery实现的表头固定效果.分享给大家供大家参考,具体如下: 运行效果截图如下: 具体实现步骤如下: 一.新建一js文件jQuery_FixedTableHead.js 内容如下: jQuery.fn.CloneTableHeader = function(tableId, tableParentDivId) { var obj = document.getElementById("tableHeaderDiv" + tableId); if (obj) { jQue

  • jQuery EasyUI学习教程之datagrid点击列表头排序

    这个示例展示如何排序datagrid通过点击列表头. 在datagrid的所有columns 可以通过点击列表头排序,你可以定义哪行可以排序,默认的列是不能排序的除非你设置sortable 属性为true 创建an DataGrid <table id="tt" class="easyui-datagrid" style="width:600px;height:250px" url="datagrid8_getdata.php&q

  • jQuery实现带分组数据的Table表头排序实例分析

    本文实例讲述了jQuery实现带分组数据的Table表头排序.分享给大家供大家参考,具体如下: 如下图: 要求:点击表头排序时,"分组"及"分组明细"的数据层次关系不变 从网上找了一段常规的table排序,改了改,以满足"分组支持",贴在这里备份 <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/T

  • JQuery拖动表头边框线调整表格列宽效果代码

    类似于桌面程序中的表格拖动表头的效果,当鼠标停留在表头边框线上时,鼠标会变成表示左右拖动的形状,接着拖动鼠标,会在表格中出现一条随鼠标移动的竖线,最后放开鼠标,表格列宽会被调整.最近比较空闲,便自己动手尝试实现,在此分享下小小的成果. 首先需要如图所示的鼠标图标文件,在自己的硬盘中搜索*.cur,肯定能找到. 为了能在所有需要该效果的页面使用,并且不需要更改页面任何HTML,我把所有的代码整合在 $(document).ready(function() {}); 中,并写入一个独立的JS文件.

  • jQuery实现表头固定效果的实例代码

    一.新建一js文件jQuery_FixedTableHead.js 内容如下: 复制代码 代码如下: jQuery.fn.CloneTableHeader = function(tableId, tableParentDivId) { var obj = document.getElementById("tableHeaderDiv" + tableId); if (obj) { jQuery(obj).remove(); } var browserName = navigator.a

  • 表头固定(利用jquery实现原理介绍)

    表头固定应该是一个用得比较多的功能,参考了网上几个例子,在几个常用浏览器下显示不是很完美.而且很多都是基于固定的表格,在编码时多写一个固定的表头,对于动态生成的不知道多少列的表格就无从下手.而且例子中大多只能满足限定高度的情况,如果限定宽度,出现横向滚动条就无能为力了. 我的目的就是要像jquery-ui那样,找到页面上存在的表格,调用一个方法就可以实现固定表头的功能.趁着动手学习写jquery插件的机会,自己写了一个表头固定的插件. 使用方式和jquery-ui中的插件一样,只需要一行代码 $

  • 基于jquery的固定表头和列头的代码

    复制代码 代码如下: <script type="text/javascript" src="http://code.jquery.com/jquery-1.6.1.min.js"></script> <script type="text/javascript">// <![CDATA[ function FixTable(TableID, FixColumnNumber, width, height)

  • 微信小程序实现固定表头、列表格组件

    目录 需求: 功能点 效果图 实现思路 具体代码(react\taro3.0) 具体代码(小程序原生) 总结 需求: 微信小程序实现固定表头固定列表格组件(移动端做点小修改通用) 功能点 排序表格 表头可固定 首列固定(可以优化成可以配置指定列左侧右侧固定) 翻页(上拉加载)监听 效果图 实现思路 开始想用三个ScrollView去实现滚动联动,固定表头.列的话,表格内容滚动表头.列也应该对应滚动,写了demo后发现监听一个ScrollView的位置信息去设置另外两个ScrollView的位置真

  • 基于jQuery实现的Ajax 验证用户名唯一性实例代码

    JSP部分代码: <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <%@include file="/common/header.jsp"%> <title>用户管理</title> <script type="text/javascript&quo

  • 基于jQuery实现仿搜狐辩论投票动画代码(附源码下载)

    基于jQuery实现仿搜狐辩论投票动画代码 ,一款个性的卡通小人正方反方辩论投票特效代码.移动动画效果平滑自然.具有非常好的用户体验.该源码兼容目前最新的各类主流浏览器. 效果演示   源码下载 html代码: <script type="text/javascript"> $(document).ready(function () { var a = 500; var b = 130; $("#white").animate({ width: 0, l

  • 基于jQuery实现仿QQ空间送礼物功能代码

    我们在QQ空间里面有一个送礼物的功能,显示了最近过生日的人.我们只要把鼠标放到如下图的生日快乐那标签上,就会显示可以给该人送的礼物!! 如下图所示: 单击其中的一个礼物,就会马上送出去.但是我们现在是要说的还有单击更多的时候,会另外弹出一个新的窗口在当前页面最前面!如下图显示: 怎么实现那上面的功能呢? 就是把鼠标放上去,弹出一天tips,单击tips里面的控件,之后弹出另外一个弹出框. 网上就会有很多比较好的插件,就先到网上去找了相对应的jquery插件. jquery中tips的有很多插件,

  • 基于jQuery实现美观且实用的倒计时实例代码

    倒计时效果有着广泛的应用,比如奥运会倒计时.高考倒计时和放假倒计时等,本章节分享一个比较美观且实用的倒计时效果. 代码实例如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>倒计时效果代

  • 基于jQuery实现的美观星级评论打分组件代码

    本文实例讲述了基于jQuery实现的美观星级评论打分组件代码.分享给大家供大家参考,具体如下: 这款jquery星级评论打分组件,是通用打分组件,callBack打分后执行的回调,this.Index:获取当前选中值. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/jquery-rate-dfzj-codes/ 具体代码如下: <!DOCTYPE HTML> <html> <head> <meta charset

  • 基于jQuery的固定表格头部的代码(IE6,7,8测试通过)

    段时间做项目时候由于需要显示一个列表,但是由于数据太多在滚动的时候表头必须冻结住,所以就写了下面这个脚本(曾经在网上也找过相应的脚本,但是不怎么理想所以就自己写了,但是目前由于项目仅仅用到了表头的冻结,而不需要指定列冻结所以目前只能算个不完整的脚本,不过一般的仅仅需要表头冻结就可以使用了),现在先看看截图: 这样实现了表头的冻结,下面表体内容可以自由滚动 看下代码: //为jquery扩展一个CloneTableHeader 方法 复制代码 代码如下: jQuery.fn.CloneTableH

  • 基于Jquery+div+css实现弹出登录窗口(代码超简单)

    具体代码详情如下所示: 基本思路先隐藏(dispaly:none)再显示,半透明蒙版层通过 z-index:9998; z-index:9999; 值越大越在前面 index.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns

  • 利用js+css+html实现固定table的列头不动

    话不多说,跟这小编来一起看下吧 1.CSS <style type="text/css"> #scroll_head { position: absolute; display: none; } </style> 2.Javascript <script type="text/javascript"> //该函数在上面一个table数据加载完成后调用 //把表头的宽度设置到会滚动的页头去 var copyWidth = funct

随机推荐