2011-02-18 77 views
2

我在jQuery UI模式對話框中使用Uploadify,並使用Ajax提交數據。然後,我可以重新使用模態對話框上傳更多文件。我現在幾乎已經開始工作了,但這是我的問題。在jQuery UI模式對話框中重新載入(或重新初始化)Uploadify

當模式框第二次打開時,我使用Uploadify添加了一個文件,它在隊列中出現兩次。如果我第三次打開模式框並添加一個文件,它將在隊列中出現3次(依此類推)。

當我關閉模態對話框的形式,我使用下面的代碼(這是從jQuery UI模式對話框的關閉函數調用):

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

它很難不看到一些更多的代碼來解決。但我認爲問題是由於uploadify插件仍然初始化而引起的。它幾乎看起來像你可以移動代碼來初始化它的對話框創建,並將其添加到其他地方。 – Loktar 2011-02-18 15:22:17

回答

2

Uploadify將事件uploadifySelect的處理程序綁定到您調用它的元素,該元素將添加隊列項目。如果您不在DestroyUploadifyInstance中解除綁定,則每次調用CreateUploadifyInstance時都會增加事件處理程序鏈,這會導致重複項。

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

這破壞/重新初始化業務只能在IE必要看來,由於它的方式處理這些隱時現Flash對象,所以我會讓它依賴於瀏覽器,並與一個調用uploadify爲FF堅持,Chrome等,而不會在對話框的每個關閉處「銷燬」。

1

你可以使用uploadifySettings()

var news_id = $(this).attr('news_id'); 
$("#image_name").uploadifySettings('script', 'http://example.com/upload.php?news=' + news_id);