Spryで作ったアコーディオンを別ページからの呼び出しでデフォルト表示を切り替える方法
今日、英会話のレッスンに行ったら先生がDreamWeaverを使って自サイトのリニューアル作業をしていてはまっていたようだったから、レッスンを受ける前に話しを聞いてみました。
- コースの案内ページをAjaxを使って書き換えた
Accordionのサンプルはここを見るとわかりやいです。
グラフィックデザイナーのためのCSSレイアウトメモ : Ajaxライブラリ使用サンプル集「アコーディオン-AdobeSpry」
http://www.ne.jp/asahi/hatakeyama/design/csslayout/ajaxtest/index08.html
デフォルトの切り替え方はわりと簡単で
new Spry.Widget.Accordion("AccordionID",{ defaultPanel: 1 });
とオプションで設定したいMapを第2パラメータとして渡してあげればよいだけ。
でも、これだけだと常に1個目のパネルがデフォルトなってしまうから、1を変数に変更。
「hogehoge.html?private」や「hogehoge.html?group」などの指定でリンクを貼ってQueryStringを利用することにします。
// QueryStringで指定されたデフォルト表示するパネル名を取得する var defaultPanelPanelName = location.href.split("?")[1]; var defaultPanelOptionNum = null; switch(defaultPanelPanelName) { case "private": defaultPanelOptionNum = 0; break; case "semi": defaultPanelOptionNum = 1; break; case "group_lesson": defaultPanelOptionNum = 2; break; default: // 指定がなかった場合のデフォルトパネルを設定 defaultPanelOptionNum = 0; } new Spry.Widget.Accordion("Accordion1", { defaultPanel: defaultPanelOptionNum });
こんな感じにすればいけます。
QueryStringの扱い方がいまいちな気もするけど・・・
あとで調べてみたら、spryのFWで今回のやりたいことがそのまんまできそうな事がわかりました。。
Using Spry URLUtils to open remote tabs and panels
http://foundationphp.com/tutorials/spry_url_utils.php
JQueryなど他のFWはいっぱいあるのにSpryという選択肢はいったいどれくらい使われているんでしょうかね?DreamWeaverユーザ以外で使っている人いるのかなぁ・・・
*1:デフォルト指定だから