Wie können Sie das binden eines Ereignishandlers nur, wenn es nicht bereits vorhanden ist?
Ich habe eine Seite, die ich möchte zu binden drag/drop-Ereignisse zu. Ich möchte die ganze Seite im browser auf das drop-Ziel, also habe ich gebunden meine Veranstaltungen an der document
Objekt. Meine Anwendung Inhalt geladen ist, in der Haupt-content-Bereich per AJAX, obwohl, und ich würde nur, wie diese event-Handler aktiv sein, wenn die upload-Seite ist derzeit sichtbar.
Jetzt bin ich verbindlich die event-Handler, wenn der upload-Seite abgerufen werden; jedes mal jedoch, wenn der upload-Seite aktiv ist, bindet es einen neuen event-handler, die verursacht die Prozedur mehrfach ausgelöst, wenn der Benutzer auf die upload-Seite, die Blätter, und kommt dann wieder. Ich dachte, ich könnte dies beheben, wenn ich könnte die handler-bind nur, wenn es nicht bereits gebunden. Ist das möglich, oder bin ich mit Blick auf eine bessere alternative?
Relevanten code, falls es hilft:
$(document).bind('dragenter', function(e) {
e.stopPropagation();
e.preventDefault();
}).bind('dragover', function(e) {
e.stopPropagation();
e.preventDefault();
}).bind('drop', function(e) {
e.stopPropagation();
e.preventDefault();
self._handleFileSelections(e.originalEvent.dataTransfer.files);
});
- mögliche Duplikate von jQuery prüfen, ob Ereignis besteht, auf dem element
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bindung, die vorhandenen event-Handler, bevor binden Sie die neue. Dies ist sehr einfach mit Namespaces Veranstaltungen [docs]:
bind()
undunbind()
statton()
undoff()
, aber diese Methode funktionierte gut. Danke!bind
sollte auch funktionieren aber). Namespaces Veranstaltungen wurden eingeführt, die in jQuery 1.2, damit sollte auf jeden Fall funktionieren 🙂 Happy coding!