使用jquery数据表中的fnGetPosition获取当前行的下一行数据

时间:2014-12-04 09:37:21

标签: jquery jquery-datatables

Datatables jquery插件的fnGetPosition函数用于获取行位置。使用这个我想知道下一行是否有数据,基于我所拥有的行位置。

var rowPosition = dataTable.fnGetPosition(this)[0];

上面的代码返回行号。我想根据上面的代码得到下一个可见行的行号。我可以这样做:

(dataTable.fnGetPosition(this)[0]) + 1

返回下一行号?

1 个答案:

答案 0 :(得分:0)

我知道这个问题非常老,但是最近在使用最新版本的Datatables(2019年9月)时遇到了这个问题。我非常惊讶(震惊!)看到不仅删除了fnGetData函数,而且似乎还没有next()函数可以向下移动到Datatables表的下一个可见行。甚至没有一个论坛帖子可以解决这个问题。幸运的是,JQuery在那里,我能够设计出一种简单的策略,无论排序顺序如何,都可以向下移动到下一行。

首先,如果事件触发了您的代码,则捕获事件目标。对我来说,我正在该行中一个单元格上捕获按键事件。就我而言,事件目标(evt.target)是一个INPUT元素。然后,使用几个parentElement引用向上DOM,直到找到TR元素。这是您的数据表行。现在,检查是否存在nextSibling。如果存在,则是下一行,您可以使用JQuery选择器查找(在我的情况下)具有相同类的INPUT元素,以便可以将其激活。这对我来说是什么样子(我正在为Datatables使用简单的CellEdit插件):

$('.cell-can-edit').on('keypress', function (e) {
  if (e.keyCode === 13) {
    var pr = e.target.parentElement.parentElement; //row containing the active cell
    var ns = pr.nextSibling; //next row down
    if (ns) {
      $('td.cell-can-edit', ns).click();  //activate the next row
    }
  }
});