Datatables jquery插件的fnGetPosition函数用于获取行位置。使用这个我想知道下一行是否有数据,基于我所拥有的行位置。
var rowPosition = dataTable.fnGetPosition(this)[0];
上面的代码返回行号。我想根据上面的代码得到下一个可见行的行号。我可以这样做:
(dataTable.fnGetPosition(this)[0]) + 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
}
}
});