0

这是我的手风琴生成的代码:

<div id="treeview-accordion">
<h3><a href="#" accindex="0">Basic</a></h3>
<div>
    <ul class="navigation-treeview treeview-sanjo" id="yw0">
        <li><span style="font-weight:bold"><a href="/sanjo/site/index"> Home</a></span>
            <ul>
                <li><span> Profile</span>
                    <ul>
                        <li><span><a href="/sanjo/user/profile"> View Profile</a></span></li>
                        <li><span><a href="/sanjo/user/profile/edit"> Update Profile</a></span></li>
                        <li><span><a href="/sanjo/user/profile/changepassword"> Change Password</a></span></li>
                    </ul>
                </li>
            </ul>
        </li>
        <li><span> Personnel Management</span>
            <ul>
                <li><span><a href="/sanjo/user/admin"> Manage Personnel</a></span>
                <ul>
                    <li><span><a href="/sanjo/user"> List Personnel</a></span></li>
                    <li><span> Add Personnel</a></span></li>
                </ul>
                </li>
            </ul>
        </li>
    </ul>
</div>
<h3><a href="#" accindex="1">Basic2</a></h3>
<div>
    <ul class="navigation-treeview treeview-sanjo" id="yw01">
        <li><span style="font-weight:bold"><a href="/sanjo/site/index2"> Home2</a></span>
            <ul>
                <li><span> Profile</span>
                    <ul>
                        <li><span><a href="/sanjo/user/profile2"> View Profile2</a></span></li>
                        <li><span><a href="/sanjo/user/profile/edit2"> Update Profile2</a></span></li>
                        <li><span><a href="/sanjo/user/profile/changepassword2"> Change Password2</a></span></li>
                    </ul>
                </li>
            </ul>
        </li>
        <li><span> Personnel Management2</span>
            <ul>
                <li><span><a href="/sanjo/user/admin2"> Manage Personnel2</a></span>
                <ul>
                    <li><span><a href="/sanjo/user2"> List Personnel2</a></span></li>
                    <li><span> Add Personnel2</a></span></li>
                </ul>
                </li>
            </ul>
        </li>
    </ul>
</div>

每次点击链接时,我都会在 cookie“sanjotreeaccordion”中保存一个值,基于<h3>该链接所在的链接:

$("#tree-accordion a").bind("click",function(){
                    var cookie=$(this).closest("div").prev("h3").find("a").attr("accindex");
                    $.cookie("sanjotreeaccordion", cookie); 
                    alert($.cookie("sanjotreeaccordion"));
                   });

然后在页面重新加载时,我得到了 cookie "sanjotreeaccordion" 值,所以我可以使用它来确定要打开哪个手风琴窗格:

$(document).ready(function(){
    alert($.cookie('sanjotreeaccordion'));
    var ind = ($.cookie('sanjotreeaccordion') || 0)*1;
    $('#tree-accordion').wijaccordion({'autoHeight':false,'requireOpenedPane':false,'selectedIndex':ind});
    $.cookie('sanjotreeaccordion',ind);    
});

您可能已经注意到我有警报,我使用它来确定 cookie 的值。WijAccordion 是创建手风琴的函数,它将根据其selectedIndex选项的值打开窗格(0表示第一个窗格,1表示第二个,依此类推)。

现在是奇怪的部分(我正在输入下一部分)。

最初,当我运行我的代码时,cookie 尚不存在,因此它将打开第一个窗格(cookie 为空,因此它返回0然后乘以1)。然后该值将保存到 cookie 中。(我检查了cookie,它是0)。

然后我点击了第二个窗格上的链接,所以我希望它保存1在 cookie 中(警报说 cookie 的值是1)。但是当页面重新加载时,cookie 值的 alert 仍然是0. 当我再次单击任何链接时,cookie 值将更改为1. 换句话说,当页面重新加载时,我得到了 cookie 的所谓先前值。

我的代码问题出在哪里?还是我的逻辑不正确?我是否没有遵循我想要遵循的顺序,即

  1. 点击链接
  2. 获取其上层的“accindex”<h3>
  3. 将值保存到 cookie
  4. 页面重新加载
  5. 获取 cookie 的值
  6. 使用 cookie 值打开手风琴的相应窗格?
4

1 回答 1

0

有几件事供您查看:

1)我不知道这是否只是您的问题中的错字,但您的容器 div 实际上具有 id“treeview-accordion”,但是,您将 click 事件绑定到具有id“树形手风琴”。所以这可以解释为什么此时没有正确设置 cookie。

2)在使用已设置的索引初始化每个页面上的手风琴后,您还设置了一个 cookie。所以这“可能”是你看到奇怪行为的原因。

那将是我开始寻找解决方案的地方。我无法访问可以使用您现在正在使用的插件完全检查它的环境,但是如果这不能引导您朝着正确的方向前进,我很乐意更详细地查看。

于 2011-08-11T11:18:54.153 回答