我使用Widget Factory编写了一个jquery-ui小部件......
我需要能够在代码中确定该元素是否已经是一个小部件......
我的investmentGrid小部件是在 我需要能够在代码的其他地方确定$('#container')是否已经是投资网格 $('#container').investmentGrid()
答案 0 :(得分:6)
您可以查询元素的jQuery.data()
函数,如下所示:
if ($('#container').data('investmentGrid')) {
...
}
答案 1 :(得分:5)
您可以尝试使用窗口小部件工厂时为您创建的伪选择器。 $(":namespace-widgetname")
答案 2 :(得分:3)
例如,如果您使用以下方法创建小部件工厂:
$.widget("Boycs.investmentGrid", ...);
然后,要检查容器是否有,请检查:
if ($('#container').data('Boycs-investmentGrid'))
{
...
}
仅仅使用名称已经不够了。
答案 3 :(得分:1)
@Boycs:根据我的理解,使用Widget Factory可以防止您在同一元素上多次实例化插件。 (参考:http://jqueryui.pbworks.com/widget-factory)
此外,如果您想确认“容器”是否已经是投资网格,您可以在插件代码中尝试以下选项:
this.element.data( “investmentGrid”) ===这个;
有关详细信息,请参阅docs.jquery.com/UI_Developer_Guide
答案 4 :(得分:1)
当前版本的jQuery UI(我可以使用1.11.x确认)允许您通过instance()
方法查询窗口小部件的实例。这将是这样的:
$('#container').investmentGrid('instance')
如果元素没有分配investmentGrid
窗口小部件,则会返回undefined
。
你也可以使用这个来代替:
$(#container').is(':data("namespace-investmentGrid")')
这样做的好处是,即使未加载小部件也可以使用它。