2012-03-02 153 views
0

我有兩組選項卡,一個嵌套在另一個。嵌套的選項卡通過刷新所有內容的setInterval重新加載。在頁面加載時,這些嵌套選項卡的cookie會設置正常,但一旦刷新發生,它將消失,選定的選項卡會跳回第一個。下面是它的樣子:http://screencast.com/t/nAZlNXIBe 所以,當我在Assigned選項卡下,然後單擊Normal選項卡時,我希望它在setInterval啓動並刷新這些選項卡時保持在Normal選項卡上。下面是我使用的代碼:jQuery選項卡cookie持久性與ajax

var $tabs2 = $('#nested').tabs({ cookie: { expires: 1, name: "nested_tabs" } }); 
setInterval(function() { 
    $('#tabs-1 .content').load('/dashboard/mine'); 
}, 30000); 

此代碼基本上只是設置標籤和cookie,那麼刷新碰巧來填充整個區域,包括標籤。它會被打破,因爲標籤正在重新加載ajax?

回答

0

好吧,我想通了,這裏的代碼:

var $tabs2 = $('#nested').tabs(); 
$tabs2.bind('tabsselect', function(event, ui) { 
    $.cookie('nested_tabs', ui.index); 
}); 
setInterval(function(){ 
    $.ajax({ url: '/dashboard/mine', success: function(html){ 
    $tabs2.tabs("destroy"); 
    $('#tabs-1 .content').html(html); 
    $tabs2 = $('#nested').tabs({ selected: $.cookie('nested_tabs') }); 
    $tabs2.bind('tabsselect', function(event, ui) { 
     $.cookie('nested_tabs', ui.index); 
    }); 
    }   
}); 
1

您的cookie在1ms後到期,改變它。

如果您尚未這樣做,您可能需要加載cookie plugin,它會在jquery-ui文件之前執行。

你可以試試:

var $tabs2 = $('#nested').tabs({ cookie: { expires: 30000, name: "nested_tabs" } }); 
setInterval(function() {  
     $.ajax({ url: '/dashboard/mine', success: function(html){ 
      $tabs2.tabs("destroy"); 
      $('#tabs-1 .content').html(html); 
      $tabs2 = $('#nested').tabs({ cookie: { expires: 30000, name: "nested_tabs" } }); }   
     }); 
    }, 30000); 

,但我懷疑重裝毀壞和重建的標籤每隔30秒將是很好的CPU /帶寬/ UX ...

+0

我確實有cookie插件,並且我試過1,300,000,3000000只是爲了確保。它看起來像是因爲子標籤(內容)正在用ajax刷新,而.tabs()調用並沒有持續下去,這就是[刷新後]的樣子(http://screencast.com/t/) KpOJF1v0ixm) – Magicmarkker 2012-03-02 21:36:50

+0

這是一個內部應用程序,所以帶寬並不那麼重要,它只會被6人使用。但是,當內容刷新時,Cookie仍然會被刪除。有沒有辦法讓cookie成爲一個全局變量,然後從該變量設置cookie?我知道全局變得很糟糕,但這是我看到的唯一的東西。除非我可以.bind/.live它以某種方式堅持 – Magicmarkker 2012-03-05 15:08:03

+0

我已經更改了代碼,以便cookie不會過期30秒,這與刷新率相同...希望它有幫助 – JKirchartz 2012-03-05 15:11:39