これは私のアコーディオンの生成コードです:
<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 の値を判断しています。selectedIndex
WijAccordion はアコーディオンを作成する関数であり、オプションの値に応じてペインを開きます (0
最初のペイン、1
2 番目のペインなど)。
さて、奇妙な部分です(入力しながら次の部分を行っています)。
最初に、コードを実行したとき、Cookie はまだ存在しないため、最初のペインが開きます (Cookie は null であるため、返さ0
れてから に乗算されます1
)。そして、その値が Cookie に保存されます。(私はクッキーをチェックしました、それはです0
)。
次に、2 番目のペインのリンクをクリックしたので、それが Cookie に保存されることを期待しています1
(アラートでは、Cookie の値は であると表示されていました1
)。しかし、ページがリロードされると、Cookie 値のアラートはまだ0
. リンクを再度クリックすると、Cookie の値が に変更され1
ます。言い換えれば、ページがリロードされたときに、おそらく以前の Cookie の値を取得しています。
私のコードのどこに問題があるのでしょうか?それとも私のロジックが間違っているのでしょうか? 従いたい順序に従っていないのでしょうか。
- リンクをクリック
- その上部の「accindex」を取得します
<h3>
- 値を Cookie に保存する
- ページのリロード
- クッキーの値を取得する
- Cookie 値を使用して、アコーディオンの適切なペインを開きますか?