FineUploader完成回调事件多次触发

时间:2014-01-03 22:55:43

标签: javascript jquery fine-uploader

我在UI模式下使用Fine Uploader作为jQuery插件,我有一个文件类型的下拉列表,如图像,视频,pdf等。我在下拉列表中动态更改allowedExtensions和acceptFiles通过删除Fine Uploader生成的div然后重新创建它来改变:

$('.qq-uploader').remove();
$('#jquery-wrapped-fine-uploader').fineUploader({/* options go here... */});

动态验证以这种方式运行很好,但我在完整的回调事件中做了一些自定义的事情,比如显示缩略图。上传文件后,每次下载列表在第一次上传之前更改时,都会触发完整事件。

我现在的解决方法是将上传的文件名存储在一个数组中,并跳过自定义完整逻辑(如果它已存在于数组中)。

我不明白为什么完整的回调事件多次触发,因为我只上传了一个文件。是否有解释这个和/或防止重复回调被触发的方法?

2 个答案:

答案 0 :(得分:2)

有几种方法可以实现您的目标:

  1. 在重新初始化Fine Uploader之前,从DOM中删除Fine Uploader容器元素。在你的小提琴中,你正在移除Fine Uploader使用的内部元素。这永远不会奏效。您需要销毁实例,并且在使用jQuery插件时执行此操作的唯一方法是销毁包含插件实例的DOM元素。在您remove容器元素之后,您可以重新添加它并重新启动Fine Uploader。

  2. 使用multiple upload buttons feature。实质上,您将为每种文件类型创建一个备用上载按钮,并使用适当的验证设置,并更改用户更改<select>值时显示的按钮。

答案 1 :(得分:2)

我在Ray Nicholus的回答中增加了一行。  $('#jquery-wrapped-fine-uploader').off()

您还可以选择删除附加到$('#jquery-wrapped-fine-uploader')

的事件处理程序