【问题标题】:Can't make jQ UI tabs work w/ cookie after jQ/UI upgradejQ/UI 升级后无法使 jQ UI 选项卡与 cookie 一起工作
【发布时间】:2013-01-29 14:29:46
【问题描述】:

我有这段代码,它使用 cookie 使 jquery 选项卡选择在刷新时保持不变

问题在于它只适用于 jQuery UI 1.7.2 和 jQuery JavaScript Library v1.4.1

如果我更新到 jQuery UI - v1.10.0 和 jQuery JavaScript Library v1.9.0,它将不再持续存在(没有错误,只是不会在页面加载时持续选择选项卡)

有人知道为什么吗?

这里是代码

$( function(){
  var cookieName = 'stickyTab';
  $( '#tabs' ).tabs( {
     selected: ( $.cookies.get( cookieName ) || 0 ),
     select: function( e, ui ){
       $.cookies.set( cookieName, ui.index );
     }
  } );
} );

在我的 html 中有

    <script type="text/javascript" src="jquery.js"></script>
    <script type="text/javascript" src="jquery-ui.js"></script>
    <script type="text/javascript" src="jquery.cookies.js"></script>

cookie由http://code.google.com/p/cookies/提供

【问题讨论】:

  • 我是那个 cookie 插件和标签代码的作者。我在使插件保持最新方面严重落后,但是您使用它的方式没有使用任何 jQuery 功能,应该可以正常工作。我相信选项卡 API 可能已经改变。如果我找到了,我会研究这种推理并发布答案。
  • 更新到最后一条评论——标签 API 已更改。我正在发布答案。
  • 问题标题具有误导性。它应该澄清您的意思是 JQuery UI,而不是 jQ UI

标签: jquery jquery-ui cookies tabs


【解决方案1】:

cookie 代码没问题,但 jQuery UI Tabs API 已随着您的升级而改变。

  1. selected 不再是有效选项,它已重命名为 active。
  2. select 不再是有效事件 - 它已更改为 activate。
  3. 传递给activate 的ui 参数的index 属性已被删除,需要做更多工作才能确定哪个选项卡刚刚激活。

这是正在使用的新 API 的现场演示:http://jaaulde.com/test_bed/stickytabNewAPI/

这里是具体的JS:

    $(function () {
        var cookieName = 'stickyTabNewAPI',
            $tabs = $('#tabs'),
            $lis = $tabs.find('ul').eq(0).find('li');

        $tabs.tabs({
            active: ($.cookies.get(cookieName) || 0),
            activate: function (e, ui) {
                $.cookies.set(cookieName, $lis.index(ui.newTab));
            }
        });
    });

我可以理解从 select 到 activate 的名称更改等。但是,我不明白为什么他们删除了 ui 参数的 index 属性。它使更多的工作......

【讨论】:

  • @punked,我正在开发我的粘性手风琴的新版本。您能否在此处使用原始问题发布一个新问题,修改为特定于新的手风琴 API,然后给我一个链接?谢谢!
猜你喜欢
  • 2013-01-22
  • 1970-01-01
  • 2014-09-20
  • 1970-01-01
  • 2012-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-17
相关资源
最近更新 更多