2011-08-11 12 views
0

前の値を使用しています。私は、リンクをクリックしjqueryのクッキーは、これは私のアコーディオンの生成されたコードである

<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>リンクに基づいて、クッキーに「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);  
}); 

アラートがあることにお気づきかもしれませんが、私はそれを使用してクッキーの価値を判断します。 WijAccordionは、アコーディオンを作成する関数で、そのselectedIndexオプションの値に応じてペインを開きます(0は最初のペイン、1は2番目を意味します)。

今、私は次の部分を入力しています。

最初は、コードを実行したときにクッキーが存在しないため、最初のペインが開きます(クッキーはnullなので、0を返して1に掛けます)。その値はクッキーに保存されます。 (私はクッキーをチェックしました、それは0です)。

次に、2番目のペインのリンクをクリックしたため、1をクッキーに保存すると予想されます(アラートでは、クッキーの値は1です)。しかし、ページがリロードされたとき、クッキー値のアラートはまだ0です。もう一度リンクをクリックすると、クッキーの値が1に変更されます。言い換えれば、ページがリロードされたとき、私は前回のクッキー値を取得しています。

私のコードにはどこの問題がありますか、それとも私のロジックが間違っていますか?私は

  1. は、その上側<h3>
  2. GET「accindexは」クッキーに
  3. ページをリロード
  4. を値を保存し、リンクをクリックしている私がフォローしたいシーケンスを、以下ではないのです
  5. クッキーの値を取得
  6. クッキーの値を使用してアコーディオンの適切なペインを開きますか?

答えて

0

あなたが見てするため、物事のカップル:

1)これは単なるタイプミスあなたの質問内であるかどうか私は知りませんが、あなたのコンテナのdivが、実際にID「ツリービュー-アコーディオンを持っていますまだ、あなたは、 "ツリーアコーディオン"というidを持つ要素内のアンカーにclickイベントをバインドしています。これは、この時点でクッキーが正しく設定されていない理由を説明します。

2)設定されているインデックスを使用して、各ページでアコーディオンを初期化した後でも、Cookieを設定しています。だから、これが、あなたが奇妙な行動を見ている理由になる可能性があります。

これで解決策を探し始めるでしょう。私はあなたが今使っているプラ​​グインで完全にチェックできる環境にアクセスすることはできませんが、これがあなたを正しい方向に導くことができない場合は、もっと詳しく見てください。

+0

こんにちは、ポロー、返信いただきありがとうございます。私は "ツリーアコーディオン"を見つけようとしましたが貼り付けられたコードには見つかりませんでした。おそらくあなたはそれを読んでいる間急いでいます:p ここのコードはそのまま貼り付けられ、クリックすると、IDが正しく呼び出されたという証拠になると思います。 – Macinville

+0

こんにちはMacinville、申し訳ありませんが私のタイプミス - それは木のアコーディオンでした(最後の "私の前のコメントのように"ではない "注意"。 –

関連する問題