DataTable(定义在u.biz.js中)的构造函数中,focusIndex属性通过如下方法进行初始化

var DataTable = function (options) {
  ...
  this.focusIndex = ko.observable(-1)

也就是说focusIndexKnockout的observable方法

通过如上构造函数,我们可以发现DataTable在构造的时候,先将focusIndex设定为-1

而在DataTable在初始化数据的时候(往table中插入row),会自动focus在最后一行,代码参照

DataTable.fn.insertRows = function (index, rows) {
  ...
  for (var i = 0; i < rows.length; i++) {
      args.push(rows[i]);
  }
  ...
  this.updateSelectedIndices(index, '+', rows.length)
  this.updateFocusIndex(index, '+', rows.length)
  ...
}

DataTable类提供了几个修改focusIndex的方法,代码都在u.biz.js中。setRow*updateFocusIndex更高层,比如在调用setRowUnFocus的时候会触发DataTable.ON_ROW_UNFOCUS事件。

DataTable.updateFocusIndex(/*opIndex*/1, /*opType*/"-", /*num*/)
DataTable.setRowFocus 设置焦点行
DataTable.setRowUnFocus 焦点行反选

Referencs