Grundsätzlich bin ich jQuery Hotkeys plugin von Herrn Resig mit Verknüpfungen zu erfassen und zu behandeln wie ctrl+o
etc ...jQuery Hotkeys ... nicht so global
OK, vielleicht tun uderstand ich nicht das Konzept, aber ich war unter dem Eindruck, dass eine ctrl+o
ausgelöst überall innerhalb des Dokuments wird von einem Dokument Hotkey-Handler erfasst werden.
Zum Beispiel arbeitet der folgende Code in der Regel ...
jQuery(document).bind('keydown', 'ctrl+o', fn);
aber es scheitert kläglich, wenn der Benutzer den Hotkey auslöst, wenn innerhalb eines Eingabefeldes ein.
Es funktioniert nur, wenn ich wie folgt vorgehen:
jQuery('body, input').bind('keydown', 'ctrl+o', fn);
, die für meine Gesundheit ist ziemlich schlecht, da es sich um ist die verfluchten Handler jedes Mal Bindung ein neues Eingabefeld auf das DOM hinzugefügt. Schlimmer noch, ich habe keine Ahnung, an was ich bei komplexen Widgets wie CodeMirror binden soll.
Weiß ich nicht, wenn mein Problem einen Sinn ergibt, vielleicht benutze ich den falschen Ansatz? Ich habe auch versucht, auf die folgenden Objekte zu binden, aber es hat nicht funktioniert: window
, document
, body
, div[contains the whole page]
NB: Sie können try it out here.
vielleicht können Sie das 'on()' hier verwenden? also wird es mit jedem Input funktionieren, der jemals hinzugefügt wurde. Oder fehlt mir etwas? –
@Topener Ich möchte nicht * nur * an alle * aktuellen * Eingänge binden, aber auch an alle * zukünftigen * Eingänge. Die Schönheit des Hinzufügens von Ereignissen auf diese Weise besteht darin, dass Sie keine globalen Variablen benötigen, um Ihre Ereignisbehandlungsfunktionen zu enthalten, Sie tun dies nur einmal, wenn dies erforderlich ist. – Christian
Aber der Punkt hier ist nicht über mich die Ereignisse hinzufügen, sondern die Hotkey-Funktionalität sollte es selbst tun. Ich meine, das ist der Punkt eines Hotkeys .... Drücken von 'Strg + s' im Netbeans-Editor erzeugt den gleichen Effekt, es in netbeans Projektliste (als Beispiel) zu tun. – Christian