こんにちは。色々試してもうまくいかないため、相談させて下さい。参考サイトの「accordion 31同時開閉タイプ」を実装しようとしているのですが、思い通りの挙動になりません。現状では、見出しをクリックすると全て開いてしまいますが、開くのはクリックしたものだけで、それ以外は閉じる仕様にしたいのです。
参考サイト
http://pops-web.com/main/html/demo-007.html
私がやってみたもの
http://otyame.chicappa.jp/test/
----------------------------------------------------------
●HTML
<div id="categoryListBlock">
<ul id="main">
<li id="testlist01" class="category">
<dl>
<dt>見出し1</dt>
<dd>
<ul id="fashionItem">
<li><a href="#">テストリスト</a></li>
<li><a href="#">テストリスト</a></li>
<li><a href="#">テストリスト</a></li>
</ul>
</dd>
</dl>
</li>
<li id="testlist02" class="category">
<dl>
<dt>見出し2</dt>
<dd>
<ul id="fashionItem">
<li><a href="#">テストリスト</a></li>
<li><a href="#">テストリスト</a></li>
<li><a href="#">テストリスト</a></li>
</ul>
</dd>
</dl>
</li>
</ul>
</div>
●Javascript
$(function(){
//オブジェクトを保存
var accordionItem=$('#main');
//一旦全部消す
accordionItem.find('dd').hide();
//active要素を指定して開く
var no=0;
accordionItem.find('dt').eq(no).addClass('active').next('dd').show();
//click-action
accordionItem.find('dt').click(function () {
//slide
$(this).next('dd').slideToggle('slow')
.siblings('dd:visible').slideUp('slow');
//activeクラス切り替え
$(this).toggleClass('active');
$(this).siblings('dt').removeClass('active');
});
//hover-toggle
accordionItem.find('dt').hover(function () {
//toggle hoveredクラス
$(this).toggleClass('hovered');
});
});
----------------------------------------------------------
おそらくHTMLの構造が違うため「.siblings」というセレクタが上手く動作していないのかなと思われますが、このような場合どうしたら良いのでしょうか。
よろしくお願い致します。
No.2ベストアンサー
- 回答日時:
結局、parents, children(find), siblingsなどを使って目的のタグを指定すれば良いのです。
以下、未検証ですがこんな感じかと。
$(this).toggleClass('active');
$(this).parents('ul').find('dt').not($(this)).removeClass('active');
うまくいきました!何から何まですみません、ありがとうございました。
parentsの使い方が理解できました。次回から活かしていきたいと思います。
No.1
- 回答日時:
slideの部分をこんなかんじに変更します。
//slide
$(this).next('dd').slideToggle('slow')
.parents('ul').find('dd:visible').not($(this).next('dd')).slideUp('slow');
//activeクラス切り替え
は期待通りの動きをしてないけど動作には関係ないのでそのままにしておきます。
この回答への補足
ご回答ありがとうございます!!
大変お手数なのですが、、
activeクラスの切り替えについても
ご教授願えますと大変助かります。
よろしくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP style.cssのjQuery条件付きcssが機能しない 4 2022/07/17 18:27
- HTML・CSS HTMLのdlとul どちらが正しいと思いますか 3 2023/02/23 11:20
- HTML・CSS FC2カートのテンプレートでの商品表示について 1 2023/03/02 18:05
- PHP アコーディオンPHPが上手くいかない 3 2022/07/15 16:29
- HTML・CSS テキストを画面の真ん中に配置したいです。 2 2022/11/25 16:11
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- その他(プログラミング・Web制作) pythonのWebスクレイピングでfind_allだとurlがNoneに 4 2022/04/17 18:21
- HTML・CSS HTML & CSS 縦ボックス内の文字の左右センタリング 3 2023/03/25 04:23
- HTML・CSS htmlについて質問です! 写真のように写真の部分が?になってしまいます。 ファイルもしっかり選べて 1 2023/07/09 21:17
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
jQueryでタブ切り替え
-
jQueryでネスト構造の<li>がク...
-
「jQuery」アコーディオンメニ...
-
JavaScriptで、?マークとコロ...
-
jQueryでヒアドキュメントを使...
-
gridstack.jsについて教えてく...
-
pythonのDjangoでHTML内で変数...
-
クリックするとサブメニュー
-
jqueryのsortableで一部ソート...
-
透過pngの透明部分以外をクリッ...
-
jQueryでシンプルドラッグドロ...
-
javascriptテキストBOX色を元に...
-
変数内容をHTML内で表示する方法
-
「画像クリックで音声再生」を ...
-
これはどんなJavaScriptなので...
-
1枚の画像をクリックして複数の...
-
画像を切り替えランダム表示
-
jQueryで同じid属性が複数あっ...
-
JSPでの画像ファイル表示
-
javaを使ってマウスオンでの画...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
jqueryのsortableで一部ソート...
-
クリックした<a>タグのみにClas...
-
どの<li><a> が押されたか判別...
-
【javascript で動的に a タグ...
-
文字と数字が混在する要素のsor...
-
javascriptでEnterキーをtabキ...
-
複数のラジオボタン項目でのテ...
-
チェックボックスに入っている...
-
jquery ドロップダウンメニュー...
-
jQueryのeqで最後からn番目以降...
-
JavaScriptで、?マークとコロ...
-
質問に答えていくと、回答によ...
-
Jqueryでリストのスクロール
-
多階層ドロップダウンのスマホ...
-
JQueryタブのアクティブ アン...
-
複数の画像をランダム(シャッ...
-
タブ切り替えの初期表示について
-
「jQuery」アコーディオンメニ...
-
オンマウスで画像ロールオーバ...
-
gridstack.jsについて教えてく...
おすすめ情報