jQueryUI:立即重新加载所有选项卡

时间:2011-06-13 16:57:27

标签: javascript jquery-ui

我正在尝试立即重新加载所有打开的标签页。 我使用代码

var length = $("#tabs").tabs("length");
for(var i = 0; i < length; i++){
    $("#tabs").tabs("load", i);
}

它完美地遍历循环,但只有最后一个标签真正重新加载。

任何有帮助的人?

1 个答案:

答案 0 :(得分:1)

问题是标签小部件只允许在任何时间进行一次加载操作,因此您会发现它是最后一个正在更新的标签,而其他标签则没有。

所以,你必须以另一种方式去做。首先,我假设您已将缓存选项设置为true。如果没有,那么继续没有意义,因为标签在激活时会刷新。

当前的加载操作完成后,您将要做的是启动下一个选项卡的下一个加载操作。最简单的方法是创建一个需要加载的选项卡队列,并在选项卡上设置load事件处理程序(在加载选项卡时会触发它)。

这是一个切口。它可以整理一下,当然,但至少它给你的味道我的意思:

var $tabs = $("#tabs").tabs({
    cache: true,
    load: function (event, ui) {
        loadNextTab();
    }
});

var tabLoadQueue = [];

var loadNextTab = function() {
    if (tabLoadQueue.length) {
        var nextTab = tabLoadQueue.pop();
        $tabs.tabs("load", nextTab);
    }      
};

$("#load").click(function() {
    var length = $tabs.tabs("length");
    for(var i = 0; i < length; i++){
        tabLoadQueue.push(i);
    }
    loadNextTab();
});