2010-12-20 90 views
1

我試圖保存一個可摺疊菜單的狀態,並使用jQuery Cookie插件..到目前爲止我遇到了麻煩..雖然..任何幫助嗎?用cookie和jquery保存UI狀態

,它的摺疊/展開

<script type="text/javascript"> 
    $(document).ready(function() { 

    $(".login-holder > ul > .loginTitle").click(function() { 
     $(this).parent().find("li").slideToggle("fast"); 
     if ($(this).parent().find(".toggle").html() == "+") { 
      $(this).parent().find(".toggle").html("-"); 
     } else { 
      $(this).parent().find(".toggle").html("+"); 
     } 
    }); 
    }) 
</script> 

XHTML的,我已經做到了這一點使用cookie

<ul class="account-links"> 
     <div class="loginTitle">User Options<span class="toggle">-</span></div> 
     <div class="menuLinks"> 
     <li> 
      <%= Html.ActionLink<EventController>(x => x.List(), "Events Near Me")%> 
     </li> 
     <li> 
      <%= Html.ActionLink<MyEventsController>(x => x.List(), "My Events")%> 
     </li> 
     <li> 
      <%= Html.ActionLink<AccountController>(x => x.Edit(), "My Profile")%> 
     </li> 
     <li> 
      <%= Html.ActionLink<ClubController>(x => x.List(), "Clubs Near Me")%> 
     </li> 
     <li> 
      <%= Html.ActionLink<MyClubsController>(x => x.List(), "My Clubs")%> 
     </li> 
     <li> 
      <%= Html.ActionLink<AccountController>(x => x.ChangePassword(), "Change My Password")%> 
     </li> 
     <li> 
      <%= Html.ActionLink<DependantController>(x => x.List(), "My Dependants") %> 
     </li> 
     </div> 
     </ul> 
    </div> 
    <% if (ViewModel.Profile.HasOrganizerInfo) { %> 
    <div class="login-holder"> 
    <ul class="account-links"> 
     <div class="loginTitle">Organizer Details<span class="toggle">-</span></div> 
     <div class=menuLinks> 
     <li> 
      <%= Html.ActionLink<AccountController>(x => x.Organizer(), "Organizer Details")%> 
     </li> 
     <li> 
      <%= Html.ActionLink<EventController>(x => x.Edit(default(int?)), "Post An Event")%> 
     </li> 
     <li> 
      <%= Html.ActionLink<EventAdminController>(x => x.List(), "Events Created By Me") %> 
     </li> 
     <li> 
      <%= Html.ActionLink<ClubController>(x => x.Edit(default(int?)), "Create A Club")%> 
     </li> 
     <li> 
      <%= Html.ActionLink<ClubAdminController>(x => x.List(), "Clubs Created By Me")%> 
     </li> 
     </div> 
    </ul> 
    </div> 
    <% } %> 
+0

我根本沒有在代碼中看到任何對cookie的引用,我是否錯過了一些東西?對於性能,可讀性和可維護性,您應該在本地存儲此引用:$(this).parent()。find(「。toggle」)(例如var foo = ; foo.html())。 – MightyE 2010-12-20 13:55:38

+0

嗯,我有困難,所以我認爲我應該把一個乾淨的副本在那裏沒有參考,所以它沒有渾濁的情況 – Kevin 2010-12-20 13:57:46

回答

0

一種方式的劇本是附加一個unload處理程序設置cookie - 它通過找到當前不是默認的所有類的ID(不管它是可見還是隱藏取決於你),然後將它們保存到cookie中來實現它。當頁面再次加載時,它會檢查該cookie是否存在,如果存在,它會使用ID字符串作爲選擇器將toggled from the default類應用於之前保存的項目。