Javascript 以编程方式将焦点放在ng网格中的第一行

Javascript 以编程方式将焦点放在ng网格中的第一行,javascript,angularjs,angular-ui,ng-grid,Javascript,Angularjs,Angular Ui,Ng Grid,在我的项目中,我有一个要求,即在网格加载后立即将重点放在ng网格的第一行,当我按下向下键时,它应该移动到下一行。我添加了以下事件: $scope.$on('ngGridEventData', function (e,s) { $scope.gridOptions.selectRow(0, true); }); 但是这个事件只是选择第一行,它不把焦点放在第一行上。需要单击该行才能在那里获得焦点。我们需要写些什么来获得关注呢?我在ng grid的github repo上报告了这一点,并得到

在我的项目中,我有一个要求,即在网格加载后立即将重点放在ng网格的第一行,当我按下向下键时,它应该移动到下一行。我添加了以下事件:

$scope.$on('ngGridEventData', function (e,s) {
    $scope.gridOptions.selectRow(0, true);
});

但是这个事件只是选择第一行,它不把焦点放在第一行上。需要单击该行才能在那里获得焦点。我们需要写些什么来获得关注呢?

我在ng grid的github repo上报告了这一点,并得到了解决方案。您可以在此处查看对话:

我们需要添加以下语句以将焦点转移到所选元素:

$(".ngViewport").focus();

我能够专注于一个特定的细胞,这样做:

$($($(".ngCellText.col1.colt1")[0]).parent()).parent().focus();
.col1.colt1表示第二列(.col0.colt0->第一列)

在本例中,我选择的是第一行,第二行将使用:

$($($(".ngCellText.col1.colt1")[1]).parent()).parent().focus();

这有点老套,但很管用。

JQuery答案有点不同:

$('div[ng-row]').eq(2).find('.ageCell').focus()

这将首先查找所需的行,在本例中为第三行,然后查找使用列名“age”的列。如果列更改或重新排序,它的弹性会更强。

FYI,您不需要调用太多的
$()
——这与您的第二行代码相同:
$(“.ngCellText.col1.colt1”).eq(1.parent().parent().focus()