0

これは私のアコーディオンの生成コードです:

<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"));
                   });

次に、ページをリロードすると、cookie の「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 の値を判断しています。selectedIndexWijAccordion はアコーディオンを作成する関数であり、オプションの値に応じてペインを開きます (0最初のペイン、12 番目のペインなど)。

さて、奇妙な部分です(入力しながら次の部分を行っています)。

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

次に、2 番目のペインのリンクをクリックしたので、それが Cookie に保存されることを期待しています1(アラートでは、Cookie の値は であると表示されていました1)。しかし、ページがリロードされると、Cookie 値のアラートはまだ0. リンクを再度クリックすると、Cookie の値が に変更され1ます。言い換えれば、ページがリロードされたときに、おそらく以前の Cookie の値を取得しています。

私のコードのどこに問題があるのでしょうか?それとも私のロジックが間違っているのでしょうか? 従いたい順序に従っていないのでしょうか。

  1. リンクをクリック
  2. その上部の「accindex」を取得します<h3>
  3. 値を Cookie に保存する
  4. ページのリロード
  5. クッキーの値を取得する
  6. Cookie 値を使用して、アコーディオンの適切なペインを開きますか?
4

1 に答える 1

0

あなたが見るべきいくつかのこと:

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

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

それが私が解決策を探し始めるところです。現在使用しているプラ​​グインで完全に確認できる環境にアクセスすることはできませんが、これで正しい方向に導かれない場合は、喜んで詳細を確認します。

于 2011-08-11T11:18:54.153 に答える