我在jQuery UI模式对话框中使用Uploadify,我使用Ajax提交数据。然后我可以重用模态对话框来上传更多文件。我现在差不多了,但这是我的问题。
当第二次打开模态框,并使用Uploadify添加文件时,它在队列中出现两次。如果我第三次打开模态框并添加文件,它将在队列中出现3次(依此类推)。
当我关闭模态对话框表单时,我使用以下代码(从jQuery UI模式对话框的Close函数调用):
function DestroyUploadifyInstance(){
$('#image_nameQueue').remove();
$('#image_nameUploader').remove();
}
当我打开模态对话框表单时,我再次调用uploadify代码(这是从jQuery UI模式对话框的Open函数调用的):
function CreateUploadifyInstance(){
$('#image_name').uploadify({
'uploader' : 'uploadify.swf',
'script' : 'uploadify.php',
'cancelImg' : 'cancel.png',
etc
我觉得我几乎就在那里,因为即使显示了重复的文件,代码实际上也能正常工作(它不会多次上传每个文件,只需一次)。
如何停止显示重复的队列项? 感谢。
答案 0 :(得分:2)
Uploadify将事件uploadifySelect的处理程序绑定到您调用它的元素,这会添加队列项。如果你没有在DestroyUploadifyInstance中取消绑定,那么事件处理程序链将随着每次调用CreateUploadifyInstance而增长,这是导致重复的原因。
function DestroyUploadifyInstance()
{
$("#image_name").unbind("uploadifySelect");
$('#image_nameQueue').remove();
swfobject.removeSWF('image_nameUploader');
}
这种破坏/重新初始化业务只在IE中是必要的,因为它隐藏了Flash对象的处理方式,所以我会依赖于浏览器,并坚持一次调用uploadify for FF,Chrome等。,在对话的每一个关闭点都没有“破坏”。
答案 1 :(得分:1)
您可以使用uploadifySettings()
var news_id = $(this).attr('news_id');
$("#image_name").uploadifySettings('script', 'http://example.com/upload.php?news=' + news_id);