【问题标题】:jQuery UI Tabs - conflict between cookie & select just added tab?jQuery UI 选项卡 - cookie 和选择刚刚添加的选项卡之间的冲突?
【发布时间】:2011-04-18 03:26:33
【问题描述】:

我正在使用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 创建的)。

有人有解决此问题的建议吗?

谢谢!

【问题讨论】:

  • 已将 $tabs.tabs('select', '#' + ui.panel.id); 添加到 this demo。它表现为intended。这是所有相关代码吗?
  • @khez - 我认为你的小提琴和我的情况之间的区别在于我没有通过 JS 添加选项卡 - 我的新选项卡是从 POST 使用新数据创建的服务器端,然后从收集数据库,然后通过循环运行以形成 lisdivs
  • 然后考虑用 PHP/ASP 标记您的问题,或者至少在您的帖子中提及这一点。你是如何添加标签的?
  • 抱歉,修复了 OP - 我通过提供将数据保存到 DB 的 PHP 表单来添加选项卡 - 然后查询生成一个数组,该数组使用 foreach 循环填充选项卡中的字段跨度>
  • 我仍在努力掌握您的情况,您是通过 AJAX 构建新选项卡并只是将响应添加到选项卡吗?还是在添加新标签时刷新页面?

标签: php javascript jquery jquery-ui cookies


【解决方案1】:

您的错误源于您仅通过 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。

如果您还有其他问题,请务必发表评论,我们会尽力解决。

【讨论】:

  • 谢谢@khez - 我应该在我的原始 JS 代码的哪一行插入这个 - 我应该删除第 8-12 行并替换为 selected: set_cookie('stickyTab',count($array)-1); - 还是应该添加这条线在别的地方吗?
  • 这是一个 PHP 语句,在发送标头之前将其添加到您的 PHP 中。
  • 不幸的是,当我在我的 PHP 顶部添加该行时出现服务器错误(而不是 $array 我使用了我的数组的名称)
  • 伙计,我想我需要睡觉了标签,它直接进入新标签(好)-但是当我选择另一个标签并刷新时,它会转到最后一个标签
  • 仅在添加新标签时执行该语句。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多