
私webデザイナーをしています。
アコーディオンメニューで(開くのは1つのパネルのみ)ページ遷移してもアコーディオンの開いている部分が閉じないものを作りたいと思っています。
しかし、下記のコードでどうしても実装できません。
技術のある方、間違いを教えていただけないでしょうか?
【html】
<dl class="accordion_dl">
<dt>アコーディオンメニュー.1</dt>
<dd>アコーディオンメニュー.1のテキスト表示</dd>
<dt>アコーディオンメニュー.2</dt>
<dd>アコーディオンメニュー.2のテキスト表示</dd>
<dt>アコーディオンメニュー.3</dt>
<dd>アコーディオンメニュー.3のテキスト表示</dd>
<dt>アコーディオンメニュー.4</dt>
<dd>
<ul>
<li>リスト挿入</li>
<li>リスト挿入</li>
<li>リスト挿入</li>
<li>リスト挿入</li>
</ul>
</dd>
</dl>
【JS】
jQueryとjquery.cookie.jsを読み込んでいます。
for (var i=0; i < $(".accordion_dl dt").length; i++) {
if( $.cookie("accord" + i) == "open" ) {
$(".accordion_dl dt").eq(i).next("dd").show();
}
}
$('.accordion_dl dt').click(function(){
$(this).toggleClass("open");
$(this).siblings("dt").removeClass("open");
$(this).next("dd").slideToggle();
$(this).next("dd").siblings("dd").slideUp();
n = $(".accordion_dl dt").index(this);
if ($.cookie("accord" + n) == "open") { $.cookie("accord"+n,"close", {path:"/"}); }
else { $.cookie("accord"+n,"open", {path:"/"}); }
});
よろしくお願いいたします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
こんにちは。
>しかし、下記のコードでどうしても実装できません。
どううまくいかないのか書いてないのでわかりませんが・・・
ざっと見たところ、動作しないわけではなくて開閉状態が思った状態と違ってしまうということでしょうか?
仕組みはご承知のように、メニューの開閉状態をクッキーに保存して、遷移後のページでそれを読み込んで再現しようとしているわけですが、そのあたりが怪しいと思われます。
デバッグのために、都度クッキーの内容を表示させてみるか、あるいはスクリプトの動作を簡単にシミュレートしてみればおわかりになると思います。
>開くのは1つのパネルのみ
という仕様とのことですが、ご提示のスクリプトでは全部の開閉状態を記録しようとしているのではないかと推測します。(多分これがうまくいっていません)
別案として。開いているメニューの位置だけを記憶しておくという方法も考えられます。
(インデックス番号などを記憶しておく=記憶項目はひとつだけ)
想像するところでは、こちらの考え方の方が見落としが起きにくいので、勘違いや間違いの入り込む可能性が減るのではないかと思います。
No.1
- 回答日時:
そんなのjavascript使いませんけど・・
【引用】____________ここから
JavaScript、Cookie、セッション ID、フレーム、DHTML、Flash などの特殊な機能が使用されているためにサイトの一部がテキスト ブラウザで表示されない場合、検索エンジンのスパイダーがサイトをうまくクロールできない可能性があります。
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ここまで[ウェブマスター向けガイドライン(品質に関するガイドライン) - ウェブマスター ツール ヘルプ( https://support.google.com/webmasters/answer/357 … )]より
単純に、スタイルシートでアコーディオンを作成して、カテゴリーではcurrentなリストのみ開いておくほうが良いです。
<div class="nav"><!-- class名は文書構造を保管するもの -->
<ol>
<li>トップ</li>
<li>あ行
<ol>
<li>あ</li>
<li>い</li>
<li>う</li>
</ol>
</li>
<li class="current">か行
<ol>
<li>か</li>
<li>き</li>
<li>く</li>
</ol>
</li>
※DIV要素とSPAN要素は、id属性及び class属性と併用することで、文書に構造を付加するため( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … )
デザインするときは、HTMLは文書構造だけ、デザインはスタイルシートと役割分担--構造とプレゼンテーションの分離( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … )しないと、あとで苦労します。
javascript使って、URLからcurrentを判断させても良いでしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS HTMLのdlとul どちらが正しいと思いますか 3 2023/02/23 11:20
- HTML・CSS FC2カートのテンプレートでの商品表示について 1 2023/03/02 18:05
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- PHP PHP MySQLに画像を直接保存 2 2022/06/05 11:50
- PHP style.cssのjQuery条件付きcssが機能しない 4 2022/07/17 18:27
- PHP アコーディオンPHPが上手くいかない 3 2022/07/15 16:29
- 数学 dl と 、 Δl はどのように違いますか? 2 2022/11/30 15:48
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- HTML・CSS アコーディオンメニューが思うように動作しません。 1 2023/08/20 16:48
- 物理学 レイノルズ数の導出においての疑問 1 2023/04/16 15:59
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
javascript(DOM)でIDとテキスト...
-
jQueryアコーディオンで複数メ...
-
jQueryの要素選択について
-
javascriptでEnterキーをtabキ...
-
タブメニューを上下に設置
-
<li>要素の追加方法
-
下記のようにクリックすると、...
-
jQueryプラグインのメガドロッ...
-
jquery 親要素以外の取得
-
大至急!!HPビルダー16の専...
-
サブメニュー表示方法
-
【javascript で動的に a タグ...
-
JS <a></a>タグ内のリンク先ア...
-
ページごとにテキストの色を変...
-
MAX関数を使ってからLEFT JOIN...
-
始めに読み込む画像を固定して...
-
エラーが出ます。
-
removeAttribute()メソッドで削...
-
複数のバナーをリロードする度...
-
ページの一部を隠したり開いた...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
jqueryのsortableで一部ソート...
-
同一ページ内で、任意の文字列...
-
タブ切り替えの初期表示について
-
ネストされたチェックボックス...
-
JQueryタブのアクティブ アン...
-
Jquery の slide.toggle で要素...
-
ホームページビルダー17のフ...
-
【javascript で動的に a タグ...
-
javascriptで正規表現の検索が...
-
JavascriptのDOMについて
-
javascript テキストエリアを1...
-
for(var i=0;...) の i の値を...
-
クリックで表示、非表示するメ...
-
jQueryで電卓を作っているのですが
-
js ライブラリ iscrollの利用に...
-
jquery ドロップダウンメニュー...
-
プルダウンのメニュー表示について
-
jQueryのhide,showで中の要素が...
-
gridstack.jsについて教えてく...
-
【HP制作】メールフォームの設...
おすすめ情報