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 ...
我确实有cookie插件,并且我试过1,300,000,3000000只是为了确保。它看起来像是因为子标签(内容)正在用ajax刷新,而.tabs()调用并没有持续下去,这就是[刷新后]的样子(http://screencast.com/t/) KpOJF1v0ixm) – Magicmarkker 2012-03-02 21:36:50
这是一个内部应用程序,所以带宽并不那么重要,它只会被6人使用。但是,当内容刷新时,Cookie仍然会被删除。有没有办法让cookie成为一个全局变量,然后从该变量设置cookie?我知道全局变得很糟糕,但这是我看到的唯一的东西。除非我可以.bind/.live它以某种方式坚持 – Magicmarkker 2012-03-05 15:08:03
我已经更改了代码,以便cookie不会过期30秒,这与刷新率相同...希望它有帮助 – JKirchartz 2012-03-05 15:11:39