13

我正在使用 angularjs 编写占位符指令。

在单击处理程序上,我想检查元素和 document.activeElement 是否相同。

我试图使用$docuemnt.activeElement它,但它总是undefined. 但是当我使用时,$document[0].activeElement我得到了当前活动的元素。

$document[0].activeElement访问当前活动元素的正确方法吗?还是做错了什么?

4

2 回答 2

25

不,$document是 的包装版本document,它是使用 jQlite 包装的,jQlite 是 jQuery 的一个小版本,所以$document没有调用任何方法,activeElement因为document在里面$document,所以你必须使用

$document[0].activeElement

或者

document.activeElement

您还可以像这样创建一个作为 activeElement 的包装版本的全局变量。

var $activeElement = angular.element(document.activeElement);
$activeElement.attr('focused', 'yes'); // Example usage
于 2013-09-26T17:44:01.863 回答
0

正如附加说明一样,您将上述答案用于:

$document[0].activeElement

那么你实际上是一个活动元素数组,所以你需要使用:

$document[0].activeElement[0]

或者

angular.element($document[0].activeElement)[0]

于 2017-02-02T17:30:20.863 回答