jQuery Tab正在缓存TabID

时间:2012-02-09 15:40:37

标签: jquery-ui jquery jquery-tabs

我定义了我的jQuery标签:

 $('#serviceTabs').tabs({
    idPrefix: 'ui-subtabs-',
    spinner: 'Retrieving data...',
    cache: false,
    select: function(event, ui) {
        if(checkServiceTabs(ui.index))
        {
            $('#ui-subtabs-'+(currentDetailTab+1)).html(" ");
            currentDetailTab = ui.index;
            return true;
     }
        else
            return false;
    },
    collapsible: true
});

不幸的是,重新加载页面后,我的标签索引会逐渐提升。 所以在第一次请求我的TabID看起来像:

#ui-subtabs-1, #ui-subtabs-2, #ui-subtabs-3

重新加载页面后,它看起来像:

#ui-subtabs-4, #ui-subtabs-5, #ui-subtabs-6

副作用是,重新加载后标签被锁定。 select事件不再起作用。

仅供参考:标签位于DIV中并与$.get功能合并。 所以我不重新加载整个页面,只有div。

在新请求之前,我已经使用.html(" ")删除了div,我也尝试了

$('#serviceTabs').tabs("destroy");

有人知道如何删除TabID缓存吗?

1 个答案:

答案 0 :(得分:0)

不幸的是,TabID来自的tabIndex变量封装在Tabs插件的匿名函数中,使其对外部世界完全不可见。它只是递增,插件没有提供重置它的方法。即使破坏插件的实例也无济于事。

在插件文档的overview页面上,指定使用<a>元素的Title属性作为标签按钮,可以引用标签容器。

然后你会对标签按钮进行这种标记:

<li><a href="hello/world.html" title="My Tab 1"> ... </a></li>

这将创建标题为ID的标签容器(用下划线替换空格):

<div id="My_Tab_1"> ... </div>

然后你可以相应地修改select方法。