0

一些背景:

我有一个使用 asp:Repeater 显示数据的数据表。

我正在使用滚动和分页的组合。当您单击一行时,数据表会重新加载并滚动到顶部。

我正在使用 scrollTop() 将先前单击的行滚动到视图中。

scrollTop() 将距顶部的像素距离作为参数。我有一个单击功能,用于显示被单击行的详细信息的行。

问题:

我正在尝试找出一种方法来计算从数据表顶部到所选行的像素距离,以便我可以将其用作 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
        }
    });

我的猜测是,我可以将与单击行的像素距离存储在 on click 函数中,然后使用它来调用 scrollTop()。

有没有一种简单的方法来计算这个像素距离?还是有更好的方法来滚动先前单击的行?

4

1 回答 1

0

对“this.offsetTop”的简单引用就是我在点击功能中所需要的。我将此值作为参数传递给 scrollTop() 并获得了我需要的功能。

offsetTop 返回从父元素顶部位置到调用者顶部位置的像素距离。

于 2014-08-25T21:17:27.363 回答