php - jQuery UI 选项卡 - cookie 和选择刚刚添加的选项卡之间存在冲突?

标签 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 创建的)。

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

谢谢!

最佳答案

您的错误源于这样一个事实:您仅通过 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。

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

关于php - jQuery UI 选项卡 - cookie 和选择刚刚添加的选项卡之间存在冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5698208/

相关文章:

php - 在 mysqli_fetch_object 中使用 foreach 而不是 while

javascript - 迭代 JSX 中对象内部的数组给出 undefined

javascript - 如何检查是否使用 Jasmine 中的特定选择器调用了 jQuery、$?

javascript - 使用测距选项生成零件号的最佳方法

javascript - nightwatchjs 并行模式 selenium hub docker compose

javascript - 如何使用ajax和JQuery实现依赖下拉zend框架1.12表单

javascript - 提交按钮中的 jquery click()

php - 删除图像扩展名,重命名并还原

javascript - 在 php 中加密数据,在 javascript 中解密

php - 强制用户通过 HTTPS 而不是 HTTP 访问我的页面?