jQuery滑动表头

时间:2011-06-09 13:43:57

标签: javascript jquery html-table

我的ASP.Net应用程序从代码隐藏中生成<asp:Table>。我需要的是当用户滚过页面时,该表的标题行向下滑动。

我使用JavaScript尝试了以下方法:

window.onscroll = function () {

    //grab the current scroll position
    var scrollY = document.body.scrollTop;
    if (scrollY == 0) {
        if (window.pageYOffset)
            scrollY = window.pageYOffset;
        else
            scrollY = (document.body.parentElement) ? document.body.parentElement.scrollTop : 0;
    }

    //grab the position of the header row I want to slide
    var head = $("tr[name='headerrow']").offset();
    var headtop = head.top;
    var headleft = head.left;

    //if the user has scrolled past the top of the header row
    if (scrollY > headtop) {

        //code correctly reaches this point as alerts show
        //alert('got here');

        //position the header row to the same as the scroll position 
        $("tr[name='headerrow']").offset({ top: scrollY, left: headleft });
    }
}

我无法移动行。各种浏览器开发人员工具都没有错误消息。

任何帮助都将不胜感激。

编辑:我尝试在行的子项(即所有offset()元素)上调用<th>函数,如下所示:

$("tr[name='headerrow']").children().offset({ top: scrollY, left: headleft });

这现在有效但当然,它们都被推到了左边,因为我正在使用标题行本身的left值...我会随着我的进度保持更新但是与此同时,任何协助都会受到赞赏。

2 个答案:

答案 0 :(得分:0)

解决方案:

使用表格行上的children()方法可以更改每个<th>元素的偏移量。可以从left方法中省略offset()值,即

$("tr[name='headerrow']").children().offset({ top: scrollY });

答案 1 :(得分:-1)

您无法将偏移设置为任何元素。您应该使用css方法并设置顶部和左侧参数。