冻结jquery中的表头

时间:2011-07-06 04:11:30

标签: javascript jquery css

我正在尝试冻结表头。我正在使用this插件来实现相同的目标 当我使用这个插件时,我得到了this.table_obj is undefined。我试图找出问题所在,但无法得到解决方案。 当我在普通的html文件中尝试此代码时,它可以工作,但不在服务器端。 你可以看到错误here ..
有什么建议我收到这个错误吗?

2 个答案:

答案 0 :(得分:1)

我认为javascript代码需要表id来获取表。可能你在调用javascript代码或指定了错误的表id时没有指定表id,或者表标记中没有表id。

但是你可以看看其他一些jquery插件 - http://www.farinspace.com/jquery-scrollable-table-plugin/

您的问题与以下问题有一定关系。所以,你也可以看看那个

https://stackoverflow.com/questions/983031/jquery-how-to-freeze-table-header-and-allow-scrolling-of-the-rest-of-the-rows

答案 1 :(得分:0)

为了实现我的目标(如所讨论的那样),我写了一些代码,以便 -

这是我写过的插件。

(function($){
$.fn.scrollbarTable=function(i){
var o={};
if(typeof(i)=='number')o.height=i;
else if(typeof(i)=='object')o=i;
else if(typeof(i)=='undefined')o={height:300}
return this.each(function(){
var $t=$(this);
var w=$t.width();
$t.width(w-
function(width){
    var parent,child;
    if(width===undefined){
        parent=$('<div style="width:50px;height:50px;overflow:auto"><div style="height:50px;"></div></div>').appendTo('body');
        child=parent.children();
        width=child.innerWidth()-child.height(99).innerWidth();parent.remove();
    }
    return width;
}());
var cols=[];
var tableCols=[];
$t.find('thead th,thead td').each(function(){cols.push($(this).width());});
$t.find('tr:eq(1) th,thead td').each(function(){tableCols.push($(this).width());});
var $firstRow=$t.clone();
$firstRow.find('tbody').remove();
$t.find('thead').remove();
$t.before($firstRow);
$firstRow.find('thead th,thead td').each(function(i){$(this).attr('width',cols[i]);});
$t.find('tr:first th,tr:first td').each(function(i){$(this).attr('width',tableCols[i]);});
var $wrap=$('<div>');
$wrap.css({width:w,height:o.height,overflow:'auto'});
$t.wrap($wrap);})};}(jQuery));

使用方法:

$(document).ready(function(){
    $('table#tabss').scrollbarTable();
}

希望它会帮助某个人......

感谢你们所有人的支持......:)