jQuery.focus() 进行不必要的滚动

标签 jquery focus scroll slickgrid

这是我的问题。

我正在创建一个对话框 (jQuery.dialog),里面有这个网格 (https://github.com/mleibman/SlickGrid)。

加载数据后,我需要将焦点放在网格上,以便用户可以使用键盘查看数据结果,而无需在网格内部单击以选择它。

但函数 grid.getCanvasNode().focus() 导致对话框的所有内容向上滚动一点,但没有必要,因为 Canvas 已经可见。

我认为问题的根源是这个 Canvas 是一个非常大的 div,它包含我的结果集 (2000px) 的所有行,但只有一部分显示在屏幕上。

有什么办法可以避免这种情况吗?

非常感谢!

最佳答案

尝试使用 goToCell()

grid.gotoCell(行, 单元格, forceEdit)

接受一个行整数和一个单元格整数,将 View 滚动到行,其中 row 是它的行索引,cell 是它的单元格索引。可选择接受 forceEdit bool 值,如果为真,将尝试为指定单元格中的字段启动编辑对话框。

例如:

grid.gotoCell(0, 0, false) // Will focus on first cell of first row

关于jQuery.focus() 进行不必要的滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9540169/

相关文章:

html - 如何让多个div水平滚动?

javascript - 下行链接更改为滚动时返回顶部链接

javascript - Robin Herbots jquery.inputmask 允许多个值以逗号分隔

wpf - 关于关注WPF的一些问题

wpf - 当 DataGrid 接收到键盘焦点时,关注 SelectedItem 的 DataGridCell

ios - 钛焦点事件在 ios 上多次触发

delphi - TListBox - 所选项目滚动速度

javascript - 每行的子列相等

jQuery:多个选择器,包括这个

javascript - $.when(ajax 1, ajax 2, ajax3).always(ajax 1,ajax 2,ajax3) 在 3 个请求完成之前触发