プロが教える店舗&オフィスのセキュリティ対策術

宜しくお願いします。

http://testbloom.sitemix.jp/shampoo/

上記に検証用のURLを記します。

カテゴリー1の中にある「今だから知りたいノンシリコンシャンプーのあれこれ!?」をクリックしてページを遷移した時にカテゴリー2の内容を全て閉じるようにしたいです。
(カテゴリー2をクリックすると全て折りたたまれる状態)
カテゴリー1に所属する内容はそのまま開いている状態を維持します。

出来ればCookieを使わずに実装したく思います。

お手数をおかけ致しますが教えて下さい。

A 回答 (3件)

いずれにしろ、どこかに状態を識別できるデータを残しておく必要がありますが、方法はいろいろあるかと。




クライアント側で処理するなら
 ・クッキーを利用する …… (これは×との条件)
 ・DOM Storageを利用する
 ・URL(クエリ部などを利用)
などが考えられると思います。

でも、ご提示のサンプルではリンク先がみな個別のアドレスになっているようですので、URLそのものを識別用に使うことも可能ですね。

・・・って、よく見れば、『 URLと同じリンクにactiveクラスを設定する 』といったことをすでにやっているようですから、それがちゃんと動作しているのなら、そこで特定された要素の親カテゴリだけ表示するようにしてあげるのが手っ取り早いのではないでしょうか?


一方で、HTMLの出力元はみなphpのようですので(個別ファイルなのか一括対応なのかわかりませんが)、URLに応じてサーバ側で先にHTMLソースに設定(クラス設定などを利用)しておくといったやり方のほうがスマートかもしれませんね。
    • good
    • 0
この回答へのお礼

fujillin様

ご回答頂きましてどうもありがとうございます。

>『 URLと同じリンクにactiveクラスを設定する 』といったことをすでにやっているようですから、それがちゃんと動作しているのなら、そこで特定された要素の親カテゴリだけ表示するようにしてあげるのが手っ取り早いのではないでしょうか?

「特定された要素の親カテゴリだけ表示」という個所で悩んでおりました。不格好ではありますがカテゴリごとにクラス名を付与する方法で解決致しました。

セレクタ等の基本をしっかりと学習します。

御世話になりました。

お礼日時:2015/09/03 09:58

jQueryでどうですか?


<script>
$(window).bind("load", function(){
 var p_url = location.href;
 if(p_url.indexOf('a-2-1') != -1){
  $("#slide li:second-child .accordion dd").css{(
   "display": "block"
  });
 }
});
</script>

ページ見たのですが、アコーディオンの開閉を何でやっているのか、アコーディオンが閉まっている時に、それぞれにdisplay:noneがついていて、もう少しスマートにできそうな気もしますが。。。

とりあえずURLにa-2-1が含まれていたら、
#slide li:second-child .accordion dd のdisplay: noneをdisplay:blockにする、といったかんじでどうかなあとおもいました。


var p_url = location.href;
で今いるページのURLを取得して、

if(p_url.indexOf('a-2-1') != -1){}
でそのURLにa-2-1が含まれていたら、●●する。

と言った感じです。
    • good
    • 0
この回答へのお礼

fufufunofufufu様

ご回答を頂いてどうもありがとうございます。
サンプルソースを示して下さって感謝致します。

お礼日時:2015/09/03 09:55

>ページを遷移した時にカテゴリー2の内容を全て閉じる



クッキーが選択肢からはずれるならデータ引き継ぎは以下のどちらか?
・getで渡す
・ハッシュでわたす

また、ページ自体のデータをajaxで管理しページを遷移しないという
考え方もありますが、それなりに面倒なのであまりお勧めしません
    • good
    • 0
この回答へのお礼

yambejp様

早々にご回答頂きましてどうもありがとうございます。
提示頂いた方法を検討してみます。

お礼日時:2015/09/03 09:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!