一页中有两个DataTable - 如何只滚动其中一个表?

时间:2013-04-25 15:01:38

标签: javascript jquery scroll datatable

我在一个页面中有两个DataTable,初始化如下:

      //First table
    sListTable = $('#subListTable').dataTable({
                "sScrollY": "265px",
                "sDom": "frtiS",
                "bDeferRender": true,
                "aaSorting": [[ 1, "desc" ]],
                "aoColumnDefs": [
                    {"sType": "date", "aTargets": [1]}
                ]
    });

      //Second table
    pListTable = $('#projListTable').dataTable({
                "sScrollY": "265px",
                "sDom": "frtiS",
                "bDeferRender": true,
                "aaSorting": [[ 1, "desc" ]],
                "aoColumnDefs": [
                    {"sType": "date", "aTargets": [1]}
                ]
    });

如您所见,我为每个表使用单独的变量,每个表都有自己的唯一ID。

现在我有一个函数可以自动突出显示“projListTable”表中的一行,并根据某个事件将该行滚动到视图中:

//Auto-scroll to row with 'row_selected' class                          
var container = $('#projListTable,div.dataTables_scrollBody');
var scrollTo = $('#projListTable tbody tr.row_selected');
container.scrollTop(scrollTo.offset().top - container.offset().top);

这个自动滚动脚本工作正常,但问题是它还滚动另一个表(sListTable),即使“projListTable”具体指定如上所示。

我需要做什么,只有“projListTable”是唯一受到container.scrollTop()调用影响的人?我有一种感觉,因为他们共享“div.dataTables_scrollBody”,但我无法弄清楚如何解决它。任何帮助深表感谢。

以下是显示问题的代码:

http://live.datatables.net/ekatik/8

1 个答案:

答案 0 :(得分:2)

您应该使用以下选项来选择目标表.dataTables_scrollBody

SEE DEMO

  var container = $('#projListTable').closest('.dataTables_scrollBody');
  var scrollTo = $('#projListTable tbody tr.row_selected');
  container.scrollTop(0); 
  container.scrollTop(scrollTo.offset().top - container.offset().top);