2014-03-19 75 views
1

我在文件上傳按鈕上方有一個下拉菜單,如果下拉菜單的值爲音頻或視頻,並且想要上傳到我的服務器(如果下拉列表的值爲pdf,doc或ppt),則上傳到S3。我怎樣才能實現這個?如何銷燬fineuploader實例並使用jquery創建一個新的實例?

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

以上是不工作,所以想到在分配fineuploader或fineuploaderS3之前刪除實例。請讓我知道如何銷燬fineuploader實例。

謝謝。

+0

我已經更新了我的回答如下,說明你應該重置實例來清除事件也是如此。 –

+0

對於這個問題的未來讀者 - 我強烈建議你不要使用精細上傳器的jQuery包裝器。 Fine Uploader本身包含所有記錄的功能,而包裝程序不會添加任何內容。我沒有理由在這種情況下使用jQuery。閱讀更多信息,請訪問https://github.com/FineUploader/fine-uploader/issues/1310。 –

回答

2

假設您未添加與特定上傳器相關聯的額外元素,則可以在呈現/實例化上傳器的其他實例之前使用$("#fileupload").empty()從頁面中刪除上傳器的DOM內容。

$('#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() documentation

0

我必須做到這一點,在我的情況下,.reset段()不存在明確的事件。我能夠做的只是使用jQuery的.unbind()和工作得很好:

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