检查是否已初始化jQuery UI选项卡(不检查类)

Jas*_*son 20 jquery jquery-ui jquery-ui-tabs

使用jQuery UI选项卡 - 我编写了一个与ui标签集成的插件.我有插件设置来启动jQuery UI选项卡,如果它还.tabs()没有被调用,但这只是一个简单的类检查:

 if(!$globalTabs.hasClass("ui-tabs")){
    $globalTabs.tabs();
 }
Run Code Online (Sandbox Code Playgroud)

但这是有问题的,因为通常为了避免FOUC,开发人员在UI类中添加选项卡以在document.ready之前获得更好的初始渲染.

我可以检查一个不同的类,比如`ui-widget1,但想知道是否有另一个/更好的方法?

Fré*_*idi 43

您可以使用data()查询附加的小部件:

if (!$globalTabs.data("tabs")) {
    $globalTabs.tabs();
}
Run Code Online (Sandbox Code Playgroud)

此行为记录在jQuery UI的开发和规划WikiWidget工厂页面中:

  • 插件实例可通过 $( "#something" ).data( "pluginname" )

    • 对包含DOM元素的jQuery对象的引用可用作实例的属性this.element,因此很容易在对象和元素之间来回切换.

更新:从jQuery UI 1.9开始,小部件键成为小部件的完全限定名称,点用短划线替换,如:

if (!$globalTabs.data("ui-tabs")) {
    $globalTabs.tabs();
}
Run Code Online (Sandbox Code Playgroud)

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

  • +1答案.但关于我对过早优化的评论:运行if语句实际上会使代码变慢:请参阅:http://jsfiddle.net/gBZbd/与http://jsfiddle.net/gBZbd/2/. (2认同)