2012-06-28 48 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被丢弃。