2011-08-11 23 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

嗨,麥金維爾,對不起我的錯字 - 這是樹 - 手風琴(注意最後的「開」不是「一」,如我以前的評論。 –