【问题标题】:Angularjs $document[0].activeElement instead of $document.activeElementAngularjs $document[0].activeElement 而不是 $document.activeElement
【发布时间】:2013-09-26 17:41:47
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: javascript angularjs angularjs-directive


    【解决方案1】:

    不,$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
    

    【讨论】:

    • 所以你是说我用对了?不过对我来说感觉很奇怪。
    • 如果感觉怪怪的就用document.activeElement
    • @iConnor 为什么我们需要使用 $document[0] 而不仅仅是 $document?
    【解决方案2】:

    作为附加说明,您将上述答案用于:

    $document[0].activeElement

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

    $document[0].activeElement[0]

    或

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-28
      相关资源
      最近更新 更多