2012-06-28 89 views
3

我正在使用jQuery-File-Upload小部件(儘管我相信這個問題可以概括爲任何jQuery小部件)。該API指示用戶使用fileupload方法來初始化窗口小部件,即:尋找有jQuery小部件初始化的元素

$('#fileupload').fileupload(); 

我的問題是:如果不知道的ID,我怎麼能找到#fileupload(並有.fileupload()呼籲他們的任何其他元素?

+0

杜克,它看起來像你正在使用ajax加載內容中的jQuery文件上傳小部件。你能幫我解決這個問題嗎? http://stackoverflow.com/questions/25265932/multiple-jquery-plugin-instances-in-ajax-loaded-html – yPhil

回答

4

jQuery的文件上傳使用jQuery UI的小部件工廠的引擎蓋下,和工廠是已知它們擴展使用data()元素註冊控件實例。

因此,您可以使用filter()和寫類似:

// Restrict ancestor if you can, $("*") is expensive. 
var uploadified = $("#yourAncestor *").filter(function() { 
    return $(this).data("fileupload"); 
}); 

更新:從jQuery UI的1.9起,the data() key becomes the widget's fully qualified name, with dots replaced by dashes。因此,上面的代碼變成:

var uploadified = $("#yourAncestor *").filter(function() { 
    return $(this).data("blueimp-fileupload"); 
}); 

使用不合格的名稱仍支持的1.9,但不建議,並支持將在1.10被丟棄。