带有cookie支持的jQuery选项卡在页面刷新后恢复错误的选项卡位置

时间:2010-02-24 10:49:01

标签: jquery

我有一个棘手的问题,我无法完全理解。它是支持cookie的jQuery选项卡。我跟着代码:

$(document).ready(function() {
var $tabs = $("#tabs").tabs();

$tabs.tabs('select', $.cookie("tabNumber"));

$('#tabs ul li a').click(function() {
    $.cookie("tabNumber", $tabs.tabs('option', 'selected'));
});

$('#btnSelect').click(function() {
    //alert($.cookie("tabNumber"));
    //$tabs.tabs('select', 2);
    $tabs.tabs('select', $.cookie("tabNumber"));
});
});

所以,我在div中有3个标签(位置为0,1,2),名为“tabs”。当用户选择一个选项卡时,选项卡位置存储在cookie中。之后,如果用户刷新页面,则必须恢复活动标签位置。

但是每次刷新页面时,我都会在之前的位置获得活动标签(如果我选择第二个标签,那么刷新后我会在第1个位置获得活动标签,等等)。 我在代码中添加了一些测试(按钮btnSelect和onclick处理程序,它复制了加载位置功能)。 所以,如果我取消注释并使用

$tabs.tabs('select', 2);

然后在我点击btnSelect后,我的位置正确。好的,没错。然后我评论该行并取消注释下一行:

alert($.cookie("tabNumber"));

因此,我选择标签,单击按钮,获取对话框消息“2”,然后在位置1的标签变为活动状态。 为什么??在这两种情况下,我都使用参数2 ...

调用'select'方法

我知道我可以为选项卡使用别名,但我想低估为什么我的代码无法正常工作。

2 个答案:

答案 0 :(得分:1)

参数可能需要是一个数字,尝试将您的行更改为:

$tabs.tabs('select', Number($.cookie("tabNumber")));

答案 1 :(得分:1)

为什么不在初始化“.tabs()”时尝试“cookie”选项参数? 喜欢:

$('selector').tabs({
  cookie:{/* any available parameter for this option, */}
  // all of them well described at http://jqueryui.com/demos/tabs/#option-cookie
});