Ich habe es mit einem seltsamen Problem zu tun, wo ich einen Event-Handler bei Instanziierung eines Moduls binden muss, aber wenn das Modul mit einem Klick oder einem Tastendruck beendet wird, möchte ich das nicht mehr globale Ereignisgrenze Ich habe das Click-Ereignis erhalten, um die Beendigung des Moduls an anderer Stelle im Code zu registrieren, und das funktioniert, aber das Problem ist die Escape-Taste, dass ich das Modul global beenden möchte, unabhängig davon, wo sich mein Benutzer gerade in der App befindet.Fenster Ereignishandler nach einmaligem Auslösen entfernen
Mein Problem ist, dass die .off() scheint nicht unter den gegebenen Umständen zu arbeiten.
let tools = {};
//how can i eliminate this next line of code after escape has been triggered?
$(window).on('keydown', (e)=>escape(e, tools));
function escape(e, tools){
if (e.which==27){
//do some stuff with tools, etc
$(window).off('keydown', $(window), escape); //this line doesn't seem to work
alert('alert triggered, but next time escape is pressed it wont.');
}
}
Bin ich über diesen Ansatz falsch? Ich habe versucht, es an das div-Element selbst zu binden, aber das hat viel mehr mit der Fokussierung des Div zu tun, um die Tasten zu erhalten, und wenn der Benutzer zu einem anderen Modul navigiert, wird die Flucht nicht mehr ausgelöst, weil dieses Modul nicht mehr Fokus haben, und gut, usw. usw. usw.
Danke!
Hier Geige: https://jsfiddle.net/rbfebL5y/1/
Um zusätzliche Informationen hinzuzufügen, sollte die Warnung nur einmal ausgelöst werden, aber im obigen Beispiel wird weiterhin ausgelöst. Das ist das Problem, vor dem ich stehe. – simon