Anirudhan J Anirudhan J - 1 month ago 7
Javascript Question

Angularjs $document[0].activeElement instead of $document.activeElement

I am writing a placeholder directive using angularjs.

On the click handler I want to check if the element and document.activeElement are the same.

I tried to use

$docuemnt.activeElement
for that but it was always
undefined
. But when I used
$document[0].activeElement
I am getting the currently active element.

Is
$document[0].activeElement
is the right way to access the currently active element? Or am doing something wrong?

Answer Source

No, $document is a wrapped version of document, it is wrapped using jQlite which is a tiny version of jQuery, so $document doesn't have any method called activeElement because document is inside $document, So you'll have to use

$document[0].activeElement

Or

document.activeElement

You could also create a global variable that is a wrapped version of activeElement like so.

var $activeElement = angular.element(document.activeElement);
$activeElement.attr('focused', 'yes'); // Example usage