2 Stimmen

Wie kann ich die Fine Uploader-Instanz zerstören und eine neue mit jQuery erstellen?

Ich habe einen Dropdown über dem Datei-Upload-Button und möchte die Datei auf S3 hochladen, wenn der Wert des Dropdowns Audio oder Video ist, und auf meinen Server hochladen, wenn der Wert des Dropdowns PDF, DOC oder PPT ist. Wie kann ich das umsetzen?

$( '#fileType').change(function() {
    lessonType = $('#fileType').val();
    if(lessonType == 'audio' || lessonType == 'video') {
       $('#fileupload').fineUploaderS3(...);
    } else {
       $('#fileupload').fineUploader(...);
    } 
})

Das oben genannte funktioniert nicht, daher dachte ich daran, die Instanz vor der Zuweisung von fineuploader oder fineuploaderS3 zu löschen. Bitte lassen Sie mich wissen, wie ich die fineuploader-Instanz zerstören kann.

Vielen Dank.

2voto

Mark Feltner Punkte 2041

Vorausgesetzt, Sie fügen keine zusätzlichen Elemente hinzu, die mit einem bestimmten Uploader verbunden sind, können Sie $("#fileupload").empty() verwenden, um die DOM-Elemente des Uploaders von der Seite zu entfernen, bevor Sie eine andere Instanz des Uploaders rendern/instantiieren.

$( '#fileType').change(function() {
    lessonType = $('#fileType').val();
    if(lessonType == 'audio' || lessonType == 'video') {
       $('#fileupload').reset();
       $('#fileupload').empty();
       $('#fileupload').fineUploaderS3(...);
    } else {
       $('#fileupload').reset();
       $('#fileupload').empty();
       $('#fileupload').fineUploader(...);
    } 
});

(jQuery's empty() Dokumentation)

1voto

Bradley Mountford Punkte 8107

Ich musste das gerade tun und in meinem Fall gab es kein .reset(), um Ereignisse zu löschen. Ich konnte einfach jQuery's .unbind() verwenden und das hat einwandfrei funktioniert:

$('#fine-uploader').unbind().empty()

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X