Jquery ui 确定一个元素是否是jQueryUI小部件

Jquery ui 确定一个元素是否是jQueryUI小部件,jquery-ui,widget,Jquery Ui,Widget,我已经使用小部件工厂编写了一个jQueryUI小部件 我需要能够在代码中确定元素是否已经是小部件 My investmentGrid小部件是在#容器上创建的,带有 $('#container').investmentGrid() 我需要能够在代码的其他地方确定$(“#container”)是否已经是一个investmentGrid@Boycs:据我所知,使用Widget Factory可以防止您在同一元素上多次实例化插件。(参考号:) 此外,如果您想确认“容器”是否已经是一个投资网格,您可以

我已经使用小部件工厂编写了一个jQueryUI小部件

我需要能够在代码中确定元素是否已经是小部件

My investmentGrid小部件是在#容器上创建的,带有

 $('#container').investmentGrid()

我需要能够在代码的其他地方确定$(“#container”)是否已经是一个investmentGrid

@Boycs:据我所知,使用Widget Factory可以防止您在同一元素上多次实例化插件。(参考号:)

此外,如果您想确认“容器”是否已经是一个投资网格,您可以从插件代码中尝试以下选项:

此.element.data(“投资网格”) ==这个


有关更多详细信息,请参阅docs.jquery.com/UI\u Developer\u Guide

您可以查询元素的
jquery.data()
函数,如下所示:

if ($('#container').data('investmentGrid')) {
   ...
}

您可以尝试在使用小部件工厂时为您创建的伪选择器
$(“:namespace widgetname”)

@dan story在回答时可能已经得到了答案,但我发现该方法不再有效。嗯,不完全是这样。至少JQueryui1.10没有。根据“实例”部分中的文档,您现在需要知道小部件的全名

例如,如果您使用以下内容创建小部件工厂:

$.widget("Boycs.investmentGrid", ...);
if ($('#container').data('Boycs-investmentGrid'))
{
    ...
}
然后,要检查容器是否有它,您需要检查以下内容:

$.widget("Boycs.investmentGrid", ...);
if ($('#container').data('Boycs-investmentGrid'))
{
    ...
}

仅仅使用名称已经不够。

当前版本的jQuery UI(我可以用1.11.x确认)允许您通过
instance()
方法查询小部件的实例。这将如下所示:

$('#container').investmentGrid('instance')
如果元素没有分配
investmentGrid
小部件,您将返回
undefined

您也可以使用以下名称:

$(#container').is(':data("namespace-investmentGrid")')

这样做的好处是,即使小部件未加载,它也可以工作。

谢谢。。。我最初的问题可能不太清楚。。。我需要能够从我的插件代码之外确定$(“#container”)是否已经是investmentGrid…你能告诉我为什么需要确定“container”是否已经是investmentGrid吗?这将帮助我更准确地回答。谢谢