【问题标题】:Can't make jQ UI accordion work w/ cookie after jQ/UI upgradejQ/UI 升级后无法使用 cookie 使 jQ UI 手风琴工作
【发布时间】:2013-01-22 15:45:59
【问题描述】:

我有这段代码,它使用 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 = 'stickyAccordion';

    $( '#accordion' ).accordion( {
        active: ( $.cookies.get( cookieName ) || 0 ),
        change: function( e, ui )
        {
    $.cookies.set( cookieName, $( this ).find( 'h3' ).index ( ui.newHeader[0] ) );
        }
    } );
} );

在我的 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/提供

【问题讨论】:

    标签: jquery jquery-ui cookies accordion jquery-ui-accordion


    【解决方案1】:

    cookie 代码没有问题,但 jQuery UI Accordion API 已随着您的升级而更改,因此 change 不再是有效事件 - 它已更改为 activate。我们还可以调整activate 方法的主体,使其比每次都重新查询标头更有效。

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

    这里是具体的JS:

    $(function () {
        var cookieName = 'stickyAccordionNewAPI',
            $accordion = $('#accordion'),
            $headers = $accordion.children('h3');
    
          $accordion.accordion( {
              active: ($.cookies.get(cookieName ) || 0),
              activate: function (e, ui) {
                  $.cookies.set(cookieName, $headers.index(ui.newHeader));
              }
          });
    });
    

    它不像 UI 选项卡所经历的那样剧烈的变化,但仍然是一个变化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多