这是我的手风琴生成的代码:
<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 的所谓先前值。
我的代码问题出在哪里?还是我的逻辑不正确?我是否没有遵循我想要遵循的顺序,即
- 点击链接
- 获取其上层的“accindex”
<h3>
- 将值保存到 cookie
- 页面重新加载
- 获取 cookie 的值
- 使用 cookie 值打开手风琴的相应窗格?