2014-03-19 80 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()