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

Find elements which have jquery widgets initialized upon them

本文关键字:小部 元素 jquery 初始化 查找      更新时间:2023-09-26

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

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

我的问题是:在不知道ID的情况下,我如何找到#fileupload(以及任何其他.fileupload()调用它们的元素?

jQuery File Upload 在后台使用 jQuery UI widget 工厂,并且该工厂已知会使用 data() 将 widgets 实例注册到它们扩展的元素。

因此,您可以使用 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 中将放弃支持。