查找在其上初始化了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中删除。