这是我手风琴的生成代码:
<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的先前值。
我的代码出现问题在哪里?或者我的逻辑是不正确的?我不遵循我想要遵循的顺序,即
<h3>
答案 0 :(得分:0)
你要看几件事情:
1)我不知道这是否只是你问题中的拼写错误,但你的容器div实际上有id“treeview-accordion”但是,你将click事件绑定到一个元素中的锚点其中id为“tree-accordian”。所以这可以解释为什么此时没有正确设置cookie。
2)在使用已设置的索引在每个页面上初始化手风琴后,您还要设置cookie。所以这可能是你看到这种奇怪行为的原因。
那将是我开始寻找解决方案的地方。我无法访问一个环境,我可以使用您正在使用的插件完全检查它,但如果这不能指导您正确的方向,将很乐意更详细地查看。< / p>