我的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
值...我会随着我的进度保持更新但是与此同时,任何协助都会受到赞赏。
答案 0 :(得分:0)
解决方案:
使用表格行上的children()
方法可以更改每个<th>
元素的偏移量。可以从left
方法中省略offset()
值,即
$("tr[name='headerrow']").children().offset({ top: scrollY });
答案 1 :(得分:-1)
您无法将偏移设置为任何元素。您应该使用css方法并设置顶部和左侧参数。