2011-08-11 43 views
0

这是我的手风琴的生成代码:jQuery的cookie的使用以前的值

<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> 

每次我点击一个链接,我在此基础上<h3>链接保存在cookie“sanjotreeaccordion”的值正在:

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

然后在页面重载,我得到的饼干“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)。

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

我的代码问题在哪里?还是我的逻辑错误?我不能下,我想跟着序列,这是

  1. 点击一个链接它的上<h3>
  2. 值保存到cookie
  3. 页面重载
  4. GET“accindex”
  5. 获取cookie的值
  6. 使用cookie值打开合适的手风琴窗格?

回答

0

夫妇的事情,你看:

1)我不知道,如果这仅仅是你的问题一个错字或没有,但你的div容器实际上有id为“树视图,手风琴“然而,您将单击事件绑定到ID为”tree-accordian“的元素中。所以这可以解释为什么cookie在这一点上没有被正确设置。

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

这将是我会开始寻找解决方案的地方。我无法访问到可以使用现在使用的插件完全查看的环境,但如果这不能指导您朝着正确的方向行事,将很乐意详细了解。

+0

嗨波洛,感谢您的答复。我试着找到“tree-accordian”,并且在我粘贴的代码中没有找到它。可能你在阅读时很着急:p 这里的代码被复制粘贴,并且与我的警报点击,所以我想这是证明ID已被正确调用。 – Macinville

+0

嗨,麦金维尔,对不起我的错字 - 这是树 - 手风琴(注意最后的“开”不是“一”,如我以前的评论。 –