2013-09-26 6 views
12

Ich schreibe eine Platzhalter Direktive mit angularjs.

Auf der Click-Handler Ich möchte überprüfen, ob das Element und document.activeElement gleich sind.

Ich habe versucht, $docuemnt.activeElement dafür zu verwenden, aber es war immer undefined. Aber wenn ich $document[0].activeElement verwende, bekomme ich das gerade aktive Element.

Ist $document[0].activeElement der richtige Weg, um auf das gerade aktive Element zuzugreifen? Oder mache ich etwas falsch?

Antwort

21

Nein, $document ist eine gewickelt Version von document wird mit jQlite gewickelt, die eine kleine Version von jQuery ist, so $document keine Methode activeElement genannt hat, weil document innerhalb $document ist, so dass Sie verwenden müssen

$document[0].activeElement 

Oder

document.activeElement 

Sie können auch eine globale Variable erstellen, die eine gewickelte Version von active wie so ist.

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

Sie sagen also, ich verwende es richtig? Fühlt sich aber seltsam für mich an. –

+2

Wenn es sich merkwürdig anfühlt, dann benutze 'document.activeElement' – iConnor

0

So wie ein zusätzlicher Hinweis ist, dass Sie die obige Antwort verwenden mit:

$document[0].activeElement

Dann sind Sie eigentlich ein Array von aktiven Elementen, so dass Sie verwenden müssen:

$document[0].activeElement[0]

oder

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

Verwandte Themen