2013-07-16 19 views
2

我一直在爲此亂搞一段時間。越深入,我越需要做出更多的調整。我最大的問題ID能夠在創建後正確引用創建的li項目。Fine Uploader在onComplete回調函數中引用新創建的DOM對象

例如,一旦圖像上傳,就會創建一個新的li項目。然後我引用這個li元素進行各種更改。如添加拇指釘和自定義按鈕。由於各種原因,此參考是必需的。

大多數的一切正常工作從刪除錯誤輸出等,但我找到相應的李元素的參考方式被打破。

從我可以告訴完全是這樣

onComplete(String id, String name, Object responseJSON, XMLHttpRequest xhr) 

有沒有這方面的大量數據,但來自我可以收集的ID是一個數字在列表中的順序來表示上傳的圖片。可能是一個內部列表,它將鏡像輸出列表。

所以我一直與這個ID與李元素數組的索引ID結婚。這使我能夠找到正確完成的li元素並對其進行處理。

所以這工作正常。問題是當我刪除圖像。圖像被刪除,然後li元素被刪除。但是,問題在於onComplete ID不會與列表中的索引結合在一起。

我使用自定義刪除功能,因爲我的圖像保存在數據庫和其他原因。在列出清單時,我也會遇到同樣的問題。目前我打算以完全相同的方式預先輸出列表的副本和相關數據。我無法找到任何有關預先填充細節的信息。

那麼有沒有一種方法可以準確地引用新完整的li元素?一旦這在大多數瀏覽器中是不變的?預填充列表的最佳方式是怎樣的?

對於新dom li元素來說,在oncomplete處理程序中真正的一個簡單引用是完美的。或類似的東西。我很驚訝它不存在。也許它確實,但我找不到任何信息。

感謝

回答

1

我會假設你使用的是默認精細上傳UI,而不是FineUploaderBasic /核心。在這種情況下,Fine Uploader爲關聯文件創建DOM元素很容易。例如,在一個onComplete回調:

.... 
onComplete: function(id, name, response, xhrOrXdr) { 
    var listItemEl = this.getItemByFileId(id);  
    // do something with this element 
} 

我提供了一個非jQuery的例子,因爲你的示例代碼似乎沒有使用jQuery,即使您已標記了這個問題,爲jQuery的。如果您使用的是jQuery插件,您的代碼會是這個樣子:

$('#myFineUploaderContainer').on('complete', function(event, id, name, response, xhrOrXdr) { 
    var $listItem = $(this).fineUploader('getItemByFileId', id); 
    // do something with this jQuery object 
}); 

需要注意的是,在上面的例子中,精細上傳版本3.6及以上將返回一個節點/ HTML元素,而精細上傳3.7和更新版本將返回預期的jQuery對象。假設你使用3.7,我寫了上面的例子。

有關此方法和其他API方法,選項和回調的更多信息,請參閱文檔http://docs.fineuploader.com

+0

是的,與jQuery抱歉。哇。我希望我幾天前問過! – Shane