Jquery ui 在jQuery UI模式对话框中重新加载(或重新初始化)Uploadify

Jquery ui 在jQuery UI模式对话框中重新加载(或重新初始化)Uploadify,jquery-ui,uploadify,Jquery Ui,Uploadify,我在jQueryUI模式对话框中使用Uploadify,并使用Ajax提交数据。然后,我可以重用模式对话框来上载更多文件。我现在几乎可以用了,但这是我的问题 第二次打开模式框时,我使用Uploadify添加了一个文件,它在队列中出现了两次。如果我第三次打开模式框并添加一个文件,它将在队列中出现3次(依此类推) 关闭模式对话框窗体时,我使用以下代码(从jQuery UI模式对话框的关闭函数调用): 当我打开模态对话框窗体时,我再次调用uploadify代码(这是从jQuery UI模态对话框的op

我在jQueryUI模式对话框中使用Uploadify,并使用Ajax提交数据。然后,我可以重用模式对话框来上载更多文件。我现在几乎可以用了,但这是我的问题

第二次打开模式框时,我使用Uploadify添加了一个文件,它在队列中出现了两次。如果我第三次打开模式框并添加一个文件,它将在队列中出现3次(依此类推)

关闭模式对话框窗体时,我使用以下代码(从jQuery UI模式对话框的关闭函数调用):

当我打开模态对话框窗体时,我再次调用uploadify代码(这是从jQuery UI模态对话框的open函数调用的):

我感觉我就快到了,因为即使显示了重复的文件,代码也能正常工作(它不会将每个文件上载多次,只上载一次)

如何停止显示重复的队列项目?
谢谢。

Uploadify将事件uploadifySelect的处理程序绑定到您调用它的元素,该元素添加了队列项。如果不在DestroyUploadifyInstance中解除绑定,那么事件处理程序链将随着每次调用CreateUploadifyInstance而增长,这就是导致重复的原因

function DestroyUploadifyInstance()
{
    $("#image_name").unbind("uploadifySelect");
    $('#image_nameQueue').remove();
    swfobject.removeSWF('image_nameUploader');
}

这种销毁/重新初始化业务似乎只有在IE中才有必要,因为它在隐藏Flash对象时处理这些对象的方式,所以我会让它依赖于浏览器,并坚持只调用一个uploadify for FF、Chrome等,而不会在每次关闭对话框时“销毁”。

您可以使用uploadifySettings()


如果看不到更多的代码,就很难排除故障。但是我认为这个问题是因为uploadify插件仍然处于初始化状态。似乎您可以将代码从对话框创建中移出,并将其添加到其他地方。谢谢,我认为这不起作用,因为image_name是对话框表单的一部分。
function CreateUploadifyInstance(){
$('#image_name').uploadify({
'uploader' : 'uploadify.swf',
'script' : 'uploadify.php',
'cancelImg' : 'cancel.png',
etc
function DestroyUploadifyInstance()
{
    $("#image_name").unbind("uploadifySelect");
    $('#image_nameQueue').remove();
    swfobject.removeSWF('image_nameUploader');
}
var news_id = $(this).attr('news_id');
$("#image_name").uploadifySettings('script', 'http://example.com/upload.php?news=' + news_id);