jQuery选项卡cookie持久性与ajax

问题描述:

我有两组选项卡,一个嵌套在另一个。嵌套的选项卡通过刷新所有内容的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?

好吧,我想通了,这里的代码:

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

您的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