Binden mehrerer Ereignisse an einen Listener (ohne JQuery)?
Während der Arbeit mit browser-events, die ich angefangen habe, die Einbeziehung von Safari touchEvents für mobile Geräte. Ich finde, dass addEventListener
s stapeln sich mit Bedingungen. Dieses Projekt nicht verwenden JQuery.
Einem standard-Ereignis-listener:
/* option 1 */
window.addEventListener('mousemove', this.mouseMoveHandler, false);
window.addEventListener('touchmove', this.mouseMoveHandler, false);
/* option 2, only enables the required event */
var isTouchEnabled = window.Touch || false;
window.addEventListener(isTouchEnabled ? 'touchmove' : 'mousemove', this.mouseMoveHandler, false);
JQuery bind
ermöglicht es, mehrere Veranstaltungen, etwa so:
$(window).bind('mousemove touchmove', function(e) {
//do something;
});
Gibt es eine Möglichkeit die beiden zu verbinden-event-Listener, wie in dem JQuery-Beispiel? ex:
window.addEventListener('mousemove touchmove', this.mouseMoveHandler, false);
Irgendwelche Vorschläge oder Tipps sind willkommen!
InformationsquelleAutor der Frage johnkreitlow | 2012-01-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
In POJS, fügen Sie einen listener in einer Zeit. Es ist nicht üblich, fügen Sie den gleichen listener für zwei unterschiedliche Veranstaltungen auf das gleiche element. Sie schreiben eine eigene kleine Funktion, die Arbeit zu tun, z.B.:
Hoffentlich zeigt er das Konzept.
Bearbeiten 2016-02-25
Dalgard Kommentar hat mich zum überdenken dieser. Ich denke, das hinzufügen von den gleichen listener für mehrere Ereignisse auf das eine element ist häufiger nun auf die unterschiedlichen interface-Typen im Einsatz, und Isaac die Antwort bietet eine gute Nutzung der built–in Methoden zur Verringerung der code (wenn auch weniger code ist, der sich, nicht unbedingt einen bonus). Erweitert mit ECMAScript 2015 Pfeil-Funktionen:
Eine ähnliche Strategie könnte hinzufügen, die denselben listener auf mehrere Elemente, aber die Notwendigkeit, dies zu tun könnte ein Indikator für event delegation.
InformationsquelleAutor der Antwort RobG
Einige kompakte syntax, erreicht das gewünschte Ergebnis, POJS:
InformationsquelleAutor der Antwort Isaac
Reinigung Isaac ' s Antwort:
InformationsquelleAutor der Antwort pmrotule
ES2015:
InformationsquelleAutor der Antwort ChrisTheButcher
Für mich; dieser code funktioniert einwandfrei und ist die kürzeste code, um mehrere Ereignisse mit derselben (inline -) Funktionen.
InformationsquelleAutor der Antwort user3796876
Ich habe eine einfachere Lösung für Sie:
Ich habe getestet dieses eine, es funktioniert großartig, auf der plus-Seite, es ist kompakt und unkompliziert wie die anderen Beispiele hier.
InformationsquelleAutor der Antwort lillypad
AddEventListener nehmen Sie eine einfache Zeichenfolge, stellt event.geben. So benötigen Sie zum schreiben eines benutzerdefinierten Funktion zum iterieren über mehrere Veranstaltungen.
Diese behandelt werden, in jQuery mithilfe .split(" ") und dann die Iteration über die Liste zu setzen, die eventListeners für jeden
types
.InformationsquelleAutor der Antwort Selvakumar Arumugam