2011-06-13 60 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(); 
});