2010-12-20 7 views
1

折りたたみ可能なメニューの状態を保存しようとしていて、jqueryのクッキープラグインを使用しようとしています。クッキーと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

<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

実際にコード内のクッキーへの参照が全く表示されません。何か不足していますか?パフォーマンス、可読性、および保守性のために、$(this).parent()。find( "。toggle")(例:var foo = ; foo.html())をローカルに保存する必要があります。 – MightyE

+0

私は困っていましたので、参考にしてそこにきれいなコピーを入れるべきだと思っていました。 – Kevin

答えて

0

一つの方法は、クッキーを設定unloadハンドラをアタッチしたスクリプト - それは現在はデフォルトではなかったすべてのクラス(可視か非表示かにかかわらず)のIDを見つけて、それをクッキーに保存することでそれを行いました。ページが再びロードされると、そのクッキーが存在するかどうかをチェックし、そうであればIDの文字列をセレクタとして使用して、先に保存されたアイテムにtoggled from the defaultクラスを適用します。

関連する問題