2011-06-13 62 views
0

我试图一次性重新加载所有打开的标签。 我使用的代码jQueryUI:立即重新加载所有标签

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

它通过循环迭代完美,但只有最后一个选项卡真的重新加载。

有人帮忙吗?

+0

你们是不是要重新加载单独的浏览器选项卡,或者你有一个使用选项卡组织在你的页面数据? – 2011-06-13 17:02:43

+0

我正在使用jQueryUI选项卡。他们是我的页面内的标签。 – Bart 2011-06-13 17:04:23

回答

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(); 
});