Về cơ bản, tôi đang sử dụng jQuery Hotkeys plugin do ông Resig để nắm bắt và xử lý các phím tắt như ctrl+o
vv ...jQuery phím nóng ... không phải như vậy toàn cầu
OK, có lẽ tôi không uderstand khái niệm, nhưng tôi đã dưới ấn tượng rằng ctrl+o
kích hoạt ở bất kỳ nơi nào bên trong tài liệu sẽ được trình xử lý phím nóng tài liệu ghi lại.
Ví dụ, đoạn mã sau hoạt động nói chung ...
jQuery(document).bind('keydown', 'ctrl+o', fn);
Tuy nhiên, nó thất bại thảm hại nếu người dùng kích hoạt các phím nóng khi bên trong một hộp đầu vào.
Nó chỉ hoạt động nếu tôi làm như sau:
jQuery('body, input').bind('keydown', 'ctrl+o', fn);
Đó là khá xấu cho sức khỏe của tôi kể từ khi nó liên quan đến ràng buộc xử lý chết tiệt mỗi lần một hộp đầu vào mới được thêm vào DOM. Tệ hơn nữa, tôi không biết phải ràng buộc gì trong trường hợp các widget phức tạp như CodeMirror.
Dunno nếu vấn đề của tôi có ý nghĩa, có lẽ tôi đang sử dụng cách tiếp cận sai? Tôi cũng đã cố gắng liên kết với các đối tượng sau đây, nhưng nó đã không làm việc: window
, document
, body
, div[contains the whole page]
NB: Bạn có thể try it out here.
có thể bạn có thể sử dụng 'on()' tại đây? vì vậy nó sẽ hoạt động với mọi đầu vào được thêm vào. Hay tôi đang thiếu một cái gì đó? –
@Topener Tôi không muốn * chỉ * liên kết với tất cả các đầu vào * hiện tại *, nhưng bất kỳ * tương lai * nào khác. Vẻ đẹp của việc thêm các sự kiện theo cách này là bạn không cần các biến toàn cầu để chứa các hàm xử lý sự kiện của bạn, bạn chỉ cần thực hiện một lần khi cần. – Christian
Nhưng vấn đề ở đây không phải là về việc tôi thêm các sự kiện, mà đúng hơn là chức năng phím nóng nên tự làm. Ý tôi là, đó là điểm của một phím nóng .... nhấn 'ctrl + s' trong trình soạn thảo Netbeans tạo ra tác dụng tương tự khi thực hiện nó trong danh sách dự án netbeans (ví dụ). – Christian