查找在其上初始化了jquery小部件的元素

我正在使用jQuery-File-Upload小部件(虽然我相信这个问题可以推广到任何jQuery小部件)。 API指示用户使用fileupload方法初始化窗口小部件,因此:

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

我的问题是:如果不知道ID,我怎样才能找到#fileupload (以及任何其他已经调用过.fileupload()元素?

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开始, data()键成为小部件的完全限定名称,点用短划线替换 。 因此,上面的代码变为:

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

在1.9中仍然支持使用非限定名称但不推荐使用,并且支持将在1.10中删除。