jquery cookie使用以前的值

时间:2011-08-11 11:04:44

标签: jquery jquery-ui jquery-ui-accordion wijmo

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

<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为null,因此返回0然后乘以1)。然后该值将保存到cookie中。 (我检查了cookie,它是0)。

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

我的代码出现问题在哪里?或者我的逻辑是不正确的?我不遵循我想要遵循的顺序,即

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

1 个答案:

答案 0 :(得分:0)

你要看几件事情:

1)我不知道这是否只是你问题中的拼写错误,但你的容器div实际上有id“treeview-accordion”但是,你将click事件绑定到一个元素中的锚点其中id为“tree-accordian”。所以这可以解释为什么此时没有正确设置cookie。

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

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