某些背景:
我有一个使用asp:Repeater显示数据的数据表。
我使用了滚动和分页的组合。单击一行时,数据表将重新加载并滚动到顶部。
我正在使用scrollTop()将之前点击的行滚动到视图中。
scrollTop()将顶部的像素距离作为参数。我有一个on click函数用于显示所单击行的详细信息的行。
问题:
我试图找出一种方法来计算从数据表顶部到所选行的像素距离,这样我就可以将它用作scrollTop()的参数
以下是数据表的格式:
<table id="tblId" class="dataTables_display">
<thead>
<tr>
//a bunch of <th tags>
</tr>
</thead>
<tbody>
<asp:Repeater ID="rptCraft" runat="server" OnItemDataBound="rptCraft_ItemDataBound">
<ItemTemplate>
<tr>
<td style="display:none;" class="rowClick"><asp:Literal ID="litId" runat="server" text='<%# DataBinder.Eval(Container.DataItem, "Id") %>'/></td>
<td><asp:CheckBox ID="chkDelete" runat="server" AutoPostBack="false" /></td>
<td><asp:Literal ID="litDescription" ClientIDMode="Static" runat="server" Text='<%# Eval("Description")%>'/></td>
</tr>
</ItemTemplate>
</asp:Repeater>
</tbody>
这是点击功能:
$("#tblId tbody tr").live("click", function (event) {
var cell = $(this).children("td:first");
var id = jQuery.trim(cell.text()); //get id code
if (id != "" && !isNaN(id)) {
//some code that accesses DB and shows details of row
}
});
我的猜测是我可以在点击功能中存储点击行的像素距离,然后用它来调用scrollTop()。
有没有简单的方法来计算这个像素距离?或者有更好的方法来滚动之前点击的行吗?
答案 0 :(得分:0)
对于'this.offsetTop'的简单引用就是我在点击功能中所需的全部内容。 我将此值作为参数传递给scrollTop()并获得了我需要的功能。
offsetTop返回从父元素顶部位置到调用者顶部位置的像素距离。