2013-09-26 17 views
12

Sto scrivendo una direttiva segnaposto utilizzando angularjs.

Al gestore click voglio verificare se l'elemento e document.activeElement sono gli stessi.

Ho provato a utilizzare $docuemnt.activeElement ma è sempre stato undefined. Ma quando ho usato $document[0].activeElement ho ottenuto l'elemento attualmente attivo.

È $document[0].activeElement è il modo giusto per accedere all'elemento attualmente attivo? O sto facendo qualcosa di sbagliato?

risposta

21

No, $document è una versione avvolta di document, è avvolto utilizzando jQlite che è una piccola versione di jQuery, quindi $document non ha alcun metodo chiamato activeElement perché document è dentro $document, quindi dovrete usare

$document[0].activeElement 

O

document.activeElement 

si potrebbe anche creare una variabile globale che è una versione avvolta di activeElement in questo modo.

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

Così si stanno dicendo sto usando nel modo giusto? Mi sembra strano per me. –

+2

Se sembra strano, basta usare 'document.activeElement' – iConnor

0

Proprio come una nota aggiuntiva è di utilizzare la risposta di cui sopra con:

$document[0].activeElement

Poi si sono in realtà una serie di elementi attivi, quindi è necessario utilizzare:

$document[0].activeElement[0]

o

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

Problemi correlati