我有一个棘手的问题,我无法完全理解。它是支持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'方法我知道我可以为选项卡使用别名,但我想低估为什么我的代码无法正常工作。
答案 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
});