質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

2回答

2708閲覧

アコーディオンメニューで一個開けると他は閉じるようにしたい

soraatori

総合スコア55

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2019/07/21 10:29

編集2019/07/21 11:03

前提・実現したいこと

WordPressで検索サイトを構築しています。
検索部分のアコーディオンメニューで一個開けると他は閉じるようにしたいのですが、
他を開けても閉じずに開いたままになってしまいます。
ご指導のほどよろしくお願いします。

該当のソースコード

html

1<div class="accordionbox" id="accordion"> 2 <ul class="accordion"> 3 <li class="accordionlist"> 4 <div class="clearfix"> 5 <div class="accordionlist-title"> 6 <p>カテゴリで探す</p> 7 </div> 8 <p class="accordion_icon"><span></span><span></span><span></span></p> 9 </div> 10 <ul class="accordionlist-item"> 11 <li><a href="">未分類</a></li> 12 <li><a href="">掘削・運搬・解体・林業</a></li> 13 <li><a href="">バックホー</a></li> 14 <li><a href="">バックホー用アタッチメント</a></li> 15 <li><a href="">林業機械</a></li> 16 <li><a href="">発電機・溶接機</a></li> 17 <li><a href="">コンプレッサー・エア工具</a></li> 18 <li><a href="">転圧・道路用機械</a></li> 19 <li><a href="">荷役機械・吊具</a></li> 20 <li><a href="">ベルトコンベアー</a></li> 21 <li><a href="">レンタカー・高所作業車</a></li> 22 <li><a href="">トラクター・ビーチクリーナー</a></li> 23 <li><a href="">各種ポンプ・高圧洗浄機</a></li> 24 <li><a href="">コンクリート打設機械</a></li> 25 <li><a href="">電動工具・小型エンジン機械</a></li> 26 <li><a href="">草刈・山林用・チェーンソー</a></li> 27 <li><a href="">掃除機・集塵機</a></li> 28 <li><a href="">冷熱機・断熱機・送風機</a></li> 29 <li><a href="">照明機器</a></li> 30 <li><a href="">安全保安機器</a></li> 31 <li><a href="">軽仮設材</a></li> 32 <li><a href="">敷鉄板・ゴムマット</a></li> 33 <li><a href="">ユニットハウス・仮設トイレ</a></li> 34 <li><a href="">備品</a></li> 35 <li><a href="">測量機、測定器</a></li> 36 <li><a href="">水タンク・ノッチタンク</a></li> 37 <li><a href="">基礎工事用機械</a></li> 38 <li><a href="">除雪機・タイヤショベル</a></li> 39 </ul> 40 </li> 41 <li class="accordionlist"> 42 <div class="clearfix"> 43 <div class="accordionlist-title"> 44 <p>名前で探す(あいうえお)</p> 45 </div> 46 <p class="accordion_icon"><span></span><span></span><span></span></p> 47 </div> 48 <ul class="accordionlist-item" style="height: auto;"> 49 <li><a href="">ア行</a></li> 50 <li><a href="">カ行</a></li> 51 <li><a href="">サ行</a></li> 52 <li><a href="">タ行</a></li> 53 <li><a href="">ナ行</a></li> 54 <li><a href="">ハ行</a></li> 55 <li><a href="">マ行</a></li> 56 <li><a href="">ヤ行</a></li> 57 <li><a href="">ラ行</a></li> 58 </ul> 59 </li> 60 </ul> 61</div>

css

1.accordionlist { 2 padding: 15px 20px; 3 border-bottom: 1px solid #FFF; 4} 5 6li.accordionlist { 7 display: block; 8 font-size: 13px; 9 font-size: 0.8125rem; 10} 11 12.accordionlist-item li:first-child { 13 display: none !important; 14} 15 16.accordionlist div .accordionlist-title { 17 float: left; 18 margin-bottom: 0; 19} 20 21.accordionlist div .accordionlist-title p { 22 margin-bottom: 0; 23} 24 25.accordionlist ul { 26 display: none; 27} 28 29.accordionlist-item li { 30 display: inline-block; 31 background-color: #FFF; 32 padding: 6px; 33 border-radius: 2px; 34 margin: 10px 5px 5px 0; 35} 36 37.accordionlist-item a { 38 color: #3840C3; 39 font-size: 14px; 40 font-size: 0.875rem; 41 font-weight: 700; 42} 43 44.accordionlist-item { 45 display: -webkit-flex; 46 display: flex; 47 -webkit-flex-wrap: wrap; 48 flex-wrap: wrap; 49 -webkit-align-items: flex-start; 50 align-items: flex-start; 51 overflow-y: scroll; 52 margin-top: 10px; 53 height: 155px; 54} 55 56.accordion_icon, 57.accordion_icon span { 58 display: inline-block; 59 transition: all .4s; 60 box-sizing: border-box; 61} 62 63.accordion_icon { 64 position: relative; 65 width: 30px; 66 float: right; 67} 68 69.accordion_icon span { 70 position: absolute; 71 right: 0; 72 width: 35%; 73 height: 2px; 74 background-color: #FFF; 75 border-radius: 4px; 76} 77 78.accordion_icon span:nth-of-type(1) { 79 top: 1.5px; 80 right: -4.4px; 81 border: 2px solid #FFF; 82 background-color: unset; 83 height: 19px; 84 width: 19px; 85 border-radius: 100px; 86} 87 88.accordion_icon span:nth-of-type(2) { 89 top: 10px; 90 -webkit-transform: rotate(0deg); 91 transform: rotate(0deg); 92} 93 94.accordion_icon span:nth-of-type(3) { 95 top: 10px; 96 -webkit-transform: rotate(90deg); 97 transform: rotate(90deg); 98} 99 100.accordion_icon.active span:nth-of-type(2) { 101 display: none; 102} 103 104.accordion_icon.active span:nth-of-type(3) { 105 top: 10px; 106 -webkit-transform: rotate(180deg); 107 transform: rotate(180deg); 108}

jQuery

1$(function () { 2 $(".accordionbox div").on("click", function () { 3 $(this).next().slideToggle(); 4 if ($(this).children(".accordion_icon").hasClass('active')) { 5 $(this).children(".accordion_icon").removeClass('active'); 6 } else { 7 $(this).children(".accordion_icon").addClass('active'); 8 } 9 }); 10}); 11 12$(function () { 13 $('.accordion p.accordion_icon').click(function () { 14 $(this).next('.accordion .accordionlist-item').slideToggle(); 15 $('.accordion p.accordion_icon').not($(this)).next('.accordion .accordionlist-item').slideUp(); 16 }); 17});

試したこと

dt-ddからul-liul-liへ再構築しソースコードを見直しましたが、まだ何かが足らないようです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

以下ように書けば動作します。
質問に記載されているコードはほかにも十数箇所に問題がありますが
問題が多すぎるので回答は控えます。

  • CSSで小数点pxが使用されている
  • CSSに使用されていないセレクタの指定がある
  • CSSの指定ミスで表示が崩れている
  • $(function が無駄に2回記述されている
  • clickイベントの発火位置が.accordionbox divになっている
  • etc.

html

1<style> 2ul, li { 3 list-style: none; 4 margin: 0; 5 padding: 0; 6} 7.accordionlist-item { 8 display: none; 9} 10</style> 11<div class="accordionbox" id="accordion"> 12<ul class="accordion"> 13 <li class="accordionlist"> 14 <div class="accordionlist-title"> 15 <p>カテゴリで探す</p> 16 </div> 17 <ul class="accordionlist-item"> 18 <li><a href="">未分類</a></li> 19 <li><a href="">掘削・運搬・解体・林業</a></li> 20 </ul> 21 </li> 22 <li class="accordionlist"> 23 <div class="accordionlist-title"> 24 <p>名前で探す(あいうえお)</p> 25 </div> 26 <ul class="accordionlist-item"> 27 <li><a href="">ア行</a></li> 28 <li><a href="">カ行</a></li> 29 </ul> 30 </li> 31</ul> 32</div> 33<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> 34<script> 35$(function() { 36 $(".accordionlist-title").on("click", function() { 37 $(".accordionlist-title").next().hide(); 38 $(this).next().slideDown(); 39 }); 40}); 41</script>

投稿2019/07/21 11:21

yasutomi

総合スコア2937

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

表示されている自分をクリックしたときにtoggle処理をいれるかどうかによります

javascript

1$(function(){ 2 $('.clearfix').next('.accordionlist-item').hide(); 3 $('.clearfix').on('click',function(){ 4 $('.clearfix').not($(this)).next('.accordionlist-item').slideUp(); 5 $(this).next('.accordionlist-item').slideToggle(); 6 }); 7});

投稿2019/07/22 00:33

yambejp

総合スコア114784

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

soraatori

2019/07/28 09:45

ありがとうございます。解決いたしました。 コードを紐解いて理解していきたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問