我使用Fine Uploader作为UI模式下的jQuery插件,并且具有文件类型的下拉列表,例如图像,视频,pdf等。当下拉列表发生更改时,我会通过更改删除来动态更改allowedExtensions和acceptFiles Fine Uploader生成的div,然后像这样重新创建它:
$('.qq-uploader').remove();
$('#jquery-wrapped-fine-uploader').fineUploader({/* options go here... */});
这种方式的动态验证效果很好,但是我在完整的回调事件中做了一些自定义操作,例如显示缩略图。上传文件后,每次第一次上传之前下拉列表发生更改时,它都会触发complete事件。
我现在的解决方法是将上传的文件名存储在数组中,并跳过自定义完整逻辑(如果该逻辑已存在于数组中)。
我不明白为什么完整的回调事件会触发多次,因为我只上传一个文件。有没有对此的解释和/或防止触发重复回调的方法?
最佳答案
这里有几种方法可以实现您的目标:
重新初始化Fine Uploader之前,请从DOM中删除Fine Uploader容器元素。在您的摆弄中,您正在删除Fine Uploader使用的内部元素。这将永远行不通。您需要销毁实例,使用jQuery插件时执行此操作的唯一方法是销毁包含插件实例的DOM元素。 remove
容器元素之后,可以重新添加它并重新初始化Fine Uploader。
利用multiple upload buttons feature。本质上,您将为每种文件类型创建一个具有适当验证设置的备用上传按钮,并更改当用户更改<select>
的值时显示的按钮。