2013-09-26 38 views
12

Tôi đang viết chỉ thị giữ chỗ bằng cách sử dụng angularjs.

Trên trình xử lý nhấp chuột, tôi muốn kiểm tra xem phần tử và document.activeElement có giống nhau hay không.

Tôi đã cố gắng sử dụng $docuemnt.activeElement cho điều đó nhưng nó luôn là undefined. Nhưng khi tôi sử dụng $document[0].activeElement Tôi nhận được phần tử hiện đang hoạt động.

Có phải $document[0].activeElement là đúng cách để truy cập vào phần tử hiện đang hoạt động không? Hay đang làm gì đó sai?

Trả lời

21

Không, $document là một phiên bản bọc của document, nó được bọc bằng jQlite mà là một phiên bản nhỏ của jQuery, vì vậy $document không có phương pháp nào gọi là activeElementdocument là bên trong $document, Vì vậy, bạn sẽ phải sử dụng

$document[0].activeElement 

Hoặc

document.activeElement 

Bạn cũng có thể tạo một biến toàn cầu đó là một phiên bản bọc của activeElement như vậy.

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

Vì vậy, bạn đang nói rằng tôi đang sử dụng nó đúng cách? Cảm thấy lạ cho tôi mặc dù. –

+2

Nếu nó cảm thấy lạ sau đó chỉ cần sử dụng 'document.activeElement' – iConnor

0

Cũng giống như một lưu ý thêm là bạn sử dụng câu trả lời ở trên với:

$document[0].activeElement

Sau đó, bạn đang thực sự là một mảng của các yếu tố tích cực, do đó bạn cần phải sử dụng:

$document[0].activeElement[0]

hoặc

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

Các vấn đề liên quan