2013-09-26 9 views
12

Piszę dyrektywę zastępczą za pomocą angularjs.

W module obsługi kliknięcia chcę sprawdzić, czy element i document.activeElement są takie same.

Próbowałem użyć do tego celu $docuemnt.activeElement, ale zawsze było to undefined. Ale kiedy użyłem $document[0].activeElement otrzymuję aktualnie aktywny element.

Czy $document[0].activeElement to właściwy sposób dostępu do aktualnie aktywnego elementu? Czy robię coś złego?

Odpowiedz

21

Nie, $document jest owinięty wersja document, jest owinięty za pomocą jQlite który jest mały wersja jQuery, więc $document nie każda metoda zwana activeElement ponieważ document jest wewnątrz $document, więc będziesz musiał użyć

$document[0].activeElement 

Albo

document.activeElement 

można również utworzyć zmienną globalną, która jest owinięta wersja activeElement jak tak.

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

Więc mówisz, że używam go we właściwy sposób? Wydaje mi się jednak dziwne. –

+2

Jeśli to jest dziwne, użyj po prostu 'document.activeElement' – iConnor

0

Podobnie jak dodatkowa uwaga jest użyć powyższą odpowiedź z:

$document[0].activeElement

Wtedy jesteś rzeczywiście tablicą z aktywnych elementów tak trzeba użyć:

$document[0].activeElement[0]

lub

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

Powiązane problemy