jQuery UI选项卡 - cookie和amp;之间的冲突选择刚刚添加的标签?

时间:2011-04-18 03:26:33

标签: php javascript jquery jquery-ui cookies

我正在使用jquery.cookies在刷新后选中一个标签。

我还希望在创建新标签后立即选中它。

使用我目前拥有的jQuery UI说明:

    var cookieName = 'stickyTab';

    $(".tabs").tabs({
        fx: {
            opacity: 'toggle',
            duration: 'fast'
        },
        selected: ( $.cookies.get( cookieName ) || 0 ),
                    select: function( e, ui )
                {
                $.cookies.set( cookieName, ui.index );
                }
    });

    var $tabs = $('.tabs').tabs({
    add: function(event, ui) {
        $tabs.tabs('select', '#' + ui.panel.id);
    }
});

不幸的是,这不起作用 - 当我创建一个新选项卡时,之前打开的选项卡仍处于选中状态(可能是因为cookie覆盖了select函数?

我的标签是通过PHP POST创建的,数据从数据库中检索并循环以创建LIDIV元素。 (即我的标签是直接从JS创建的 )。

有人有建议解决这个问题吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

您的错误源于您只是通过JavaScript更新Cookie,但是在页面重新加载时通过PHP添加新标签。这会导致附加新标签但不与您的Cookie同步。

由于jQuery UI Tabs selected属性是索引。你的标签是通过数组创建的,简单:

setcookie('stickyTab',count($array)-1);
// this will set the selected tab to the last appended tab

请注意,只需在附加新选项卡时运行此语句。否则,您将通过JS覆盖cookie集。

如果您还有其他问题,请务必发表评论,我们会尝试修复。