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

如果Table数据过多,页面必然会拉的很长,固定表头,可以方便用户对照表头项目列表。近日做后台界面时,整理固定表头三种方法

A:使用JQuery UI插件,用DIV替换table,overflow-y:hidden达到滚动,让 thead绝对定位达到固定的目的,方法如下:
复制代码 代码如下:

(function($){
$.chromatable = {
defaults: {
width: "900px",
height: "300px",
scrolling: "yes"
}
};
$.fn.chromatable = function(options){
var options = $.extend({}, $.chromatable.defaults, options);
return this.each(function(){
var $this = $(this);
var $uniqueID = $(this).attr("ID") + ("wrapper");
$(this).css('width', options.width).addClass("_scrolling");
$(this).wrap('
');
$(".scrolling_outer").css({'position':'relative'});
$("#"+$uniqueID).css(
{'border':'1px solid #CCCCCC',
'overflow-x':'hidden',
'overflow-y':'auto',
'padding-right':'17px'
});
$("#"+$uniqueID).css('height', options.height);
$("#"+$uniqueID).css('width', options.width);
$(this).before($(this).clone().attr("id", "").addClass("_thead").css(
{'width' : 'auto',
'display' : 'block',
'position':'absolute',
'border':'none',
'border-bottom':'1px solid #CCC',
'top':'1px'
}));
$('._thead').children('tbody').remove();
$(this).each(function( $this ){
if (options.width == "100%" || options.width == "auto") {
$("#"+$uniqueID).css({'padding-right':'0px'});
}
if (options.scrolling == "no") {
$("#"+$uniqueID).before('Expand table');
$("#"+$uniqueID).css({'padding-right':'0px'});
$(".expander").each(
function(int){
$(this).attr("ID", int);
$( this ).bind ("click",function(){
$("#"+$uniqueID).css({'height':'auto'});
$("#"+$uniqueID+" ._thead").remove();
$(this).remove();
});
});
$("#"+$uniqueID).resizable({ handles: 's' }).css("overflow-y", "hidden");
}
});
$curr = $this.prev();
$("thead:eq(0)>tr th",this).each( function (i) {
$("thead:eq(0)>tr th:eq("+i+")", $curr).width( $(this).width());
});
if (options.width == "100%" || "auto"){
$(window).resize(function(){
resizer($this);
});
}
});
};
function resizer($this) {
$curr = $this.prev();
$("thead:eq(0)>tr th", $this).each( function (i) {
$("thead:eq(0)>tr th:eq("+i+")", $curr).width( $(this).width());
});
};
})(jQuery);

页面调用如下:
复制代码 代码如下:

...


...














...






Check out this headerLook here's another oneWow, look at me!
Some content goes in herePraesent vitae ligula nec orci pretium vestibulumMaecenas tempus dictum libero
Quisque in wisi quis orci tincidunt fermentumMauris aliquet mattis metusEtiam eu ante non leo egestas nonummy


此方法IE和FF的兼容性都很好,推荐。
B:利用css滤镜实现,但FF不支持微软的东西,不兼容。DOM如下:
复制代码 代码如下:




New Document











































































































































































































































































































列头列头列头
h1h2h3h4h5h6h7


a
单元格2单元格3单元格4单元格5单元格6单元格7


b
单元格2单元格3单元格4单元格5单元格6单元格7


c
单元格2单元格3单元格4单元格5单元格6单元格7


d
单元格2单元格3单元格4单元格5单元格6单元格7


e
单元格2单元格3单元格4单元格5单元格6单元格7


f
单元格2单元格3单元格4单元格5单元格6单元格7


g
单元格2单元格3单元格4单元格5单元格6单元格7


d
单元格2单元格3单元格4单元格5单元格6单元格7


e
单元格2单元格3单元格4单元格5单元格6单元格7


f
单元格2单元格3单元格4单元格5单元格6单元格7


g
单元格2单元格3单元格4单元格5单元格6单元格7


d
单元格2单元格3单元格4单元格5单元格6单元格7


e
单元格2单元格3单元格4单元格5单元格6单元格7


f
单元格2单元格3单元格4单元格5单元格6单元格7


g
单元格2单元格3单元格4单元格5单元格6单元格7


d
单元格2单元格3单元格4单元格5单元格6单元格7


e
单元格2单元格3单元格4单元格5单元格6单元格7


f
单元格2单元格3单元格4单元格5单元格6单元格7


g
单元格2单元格3单元格4单元格5单元格6单元格7


d
单元格2单元格3单元格4单元格5单元格6单元格7


e
单元格2单元格3单元格4单元格5单元格6单元格7


f
单元格2单元格3单元格4单元格5单元格6单元格7


g
单元格2单元格3单元格4单元格5单元格6单元格7


d
单元格2单元格3单元格4单元格5单元格6单元格7


e
单元格2单元格3单元格4单元格5单元格6单元格7


f
单元格2单元格3单元格4单元格5单元格6单元格7


g
单元格2单元格3单元格4单元格5单元格6单元格7


d
单元格2单元格3单元格4单元格5单元格6单元格7


e
单元格2单元格3单元格4单元格5单元格6单元格7


f
单元格2单元格3单元格4单元格5单元格6单元格7


g
单元格2单元格3单元格4单元格5单元格6单元格7




C:最简单的方法当然是写2个table,用DIV的overflow-y:auto来实现,兼容性绝对没问题,麻烦之处在于2个table的对齐问题,另外用脚本赋予高度的话,需要加onresize()方法。DOM如下:
复制代码 代码如下:





无标题文档
























列头列头列头
h1h2h3h4h5h6h7






















































































































































































































































































































































































































































































































































































a
单元格2单元格3单元格4单元格5单元格6单元格7


b
单元格2单元格3单元格4单元格5单元格6单元格7


c
单元格2单元格3单元格4单元格5单元格6单元格7


d
单元格2单元格3单元格4单元格5单元格6单元格7


e
单元格2单元格3单元格4单元格5单元格6单元格7


f
单元格2单元格3单元格4单元格5单元格6单元格7


g
单元格2单元格3单元格4单元格5单元格6单元格7


d
单元格2单元格3单元格4单元格5单元格6单元格7


e
单元格2单元格3单元格4单元格5单元格6单元格7


f
单元格2单元格3单元格4单元格5单元格6单元格7


g
单元格2单元格3单元格4单元格5单元格6单元格7


d
单元格2单元格3单元格4单元格5单元格6单元格7


e
单元格2单元格3单元格4单元格5单元格6单元格7


f
单元格2单元格3单元格4单元格5单元格6单元格7


g
单元格2单元格3单元格4单元格5单元格6单元格7


d
单元格2单元格3单元格4单元格5单元格6单元格7


e
单元格2单元格3单元格4单元格5单元格6单元格7


f
单元格2单元格3单元格4单元格5单元格6单元格7


g
单元格2单元格3单元格4单元格5单元格6单元格7


d
单元格2单元格3单元格4单元格5单元格6单元格7


e
单元格2单元格3单元格4单元格5单元格6单元格7


f
单元格2单元格3单元格4单元格5单元格6单元格7


g
单元格2单元格3单元格4单元格5单元格6单元格7


d
单元格2单元格3单元格4单元格5单元格6单元格7


e
单元格2单元格3单元格4单元格5单元格6单元格7


f
单元格2单元格3单元格4单元格5单元格6单元格7


g
单元格2单元格3单元格4单元格5单元格6单元格7


d
单元格2单元格3单元格4单元格5单元格6单元格7


e
单元格2单元格3单元格4单元格5单元格6单元格7


f
单元格2单元格3单元格4单元格5单元格6单元格7


g
单元格2单元格3单元格4单元格5单元格6单元格7


a
单元格2单元格3单元格4单元格5单元格6单元格7


b
单元格2单元格3单元格4单元格5单元格6单元格7


c
单元格2单元格3单元格4单元格5单元格6单元格7


d
单元格2单元格3单元格4单元格5单元格6单元格7


e
单元格2单元格3单元格4单元格5单元格6单元格7


f
单元格2单元格3单元格4单元格5单元格6单元格7


g
单元格2单元格3单元格4单元格5单元格6单元格7


d
单元格2单元格3单元格4单元格5单元格6单元格7


e
单元格2单元格3单元格4单元格5单元格6单元格7


f
单元格2单元格3单元格4单元格5单元格6单元格7


g
单元格2单元格3单元格4单元格5单元格6单元格7


d
单元格2单元格3单元格4单元格5单元格6单元格7


e
单元格2单元格3单元格4单元格5单元格6单元格7


f
单元格2单元格3单元格4单元格5单元格6单元格7


g
单元格2单元格3单元格4单元格5单元格6单元格7


d
单元格2单元格3单元格4单元格5单元格6单元格7


e
单元格2单元格3单元格4单元格5单元格6单元格7


f
单元格2单元格3单元格4单元格5单元格6单元格7


g
单元格2单元格3单元格4单元格5单元格6单元格7


d
单元格2单元格3单元格4单元格5单元格6单元格7


e
单元格2单元格3单元格4单元格5单元格6单元格7


f
单元格2单元格3单元格4单元格5单元格6单元格7


g
单元格2单元格3单元格4单元格5单元格6单元格7


d
单元格2单元格3单元格4单元格5单元格6单元格7


e
单元格2单元格3单元格4单元格5单元格6单元格7


f
单元格2单元格3单元格4单元格5单元格6单元格7


g
单元格2单元格3单元格4单元格5单元格6单元格7


d
单元格2单元格3单元格4单元格5单元格6单元格7


e
单元格2单元格3单元格4单元格5单元格6单元格7


f
单元格2单元格3单元格4单元格5单元格6单元格7


g
单元格2单元格3单元格4单元格5单元格6单元格7





有时候最笨的方法也可能是最简单最好的方法,这样写的兼容性绝对安全,灵活性也不错。

以上就是基于jquery的表头固定的若干方法的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » JavaScript 教程