Slide Togggle の動作制御をしたい
Slide Toggle でモバイル端末のアコーディオンメニューを作っています。
階層構造は第一階層と第二階層だけです。
Toggleメニュー起動時には第一階層だけが確認でき、クリック操作で展開します。
メニューを展開していない(第二階層を開かない)ときは第一階層に Font Awesome の<i class="fas fa-plus"></i>
のプラス(+)マークが表示されていて、メニューを展開したときは<i class="fas fa-minus"></i>マイナス(-)マークが表示させるのが希望です。
また一つ開くと他は閉じるようにしています。
動作の条件分岐が考慮不足で意図した動きをしてくれません。Font Awesomeの切り替え表示ができません。
お忙しいところ恐縮ですが何かしらヒントをいただけますと大変ありがたいです。
どうぞよろしくお願いいたします。
発生している問題・エラーメッセージ
一つ開くと他のメニューを閉じるのですがその際に Font Awesomeの切り替えのために条件分岐が考慮不足 Font Awesomeがプラスになるところでマイナスになる。
該当のソースコード
JS
1<script> 2$(function () { 3 $('.ac-parent').on('click', function () { 4 $(this).next().slideToggle(); 5 //openクラスをつける 6 $(this).toggleClass("open"); 7 $(this).find('i').toggleClass('fa-plus fa-2x fa-minus fa-2x') 8 //クリックされていないac-parentのopenクラスを取る 9 $('.ac-parent').not($(this)).removeClass('open'); 10 $('.ac-parent').not(this).removeClass('fa-minus fa-2x'); 11 12 // 一つ開くと他は閉じるように 13 $('.ac-parent').not($(this)).next('.ac-child').slideUp(); 14 }); 15 $('.ac-parent').blur(function(){ 16 $(this).find('i').toggleClass('fa-plus fa-2x fa-minus fa-2x') 17 }); 18}); 19</script>
HTML
1<ul> 2 <li class="ac"> 3 <a href="*" class="ac-parent">A<span class="icon--toggle"><i class="fas fa-plus"></i></span></a> 4 <ul class="ac-child"> 5 <li><a href="*">A-1</a></li> 6 </ul> 7 </li><li class="ac"> 8 <a href="*" class="ac-parent">B<span class="icon--toggle"><i class="fas fa-plus"></i></span></a> 9 <ul class="ac-child"> 10 <li><a href="*">B-1</a></li> 11 </ul> 12 </li><li class="ac"> 13 <a href="*" class="ac-parent">C<span class="icon--toggle"><i class="fas fa-plus"></i></span></a> 14 <ul class="ac-child"> 15 <li><a href="*">C-1</a></li> 16 </ul> 17 </li> 18</ul>
試したこと
記述が分からないのでお手上げ状態です。
補足情報(FW/ツールのバージョンなど)
WAI-ARIA の書き方はまだ分からないので、タブ操作でメニュー展開は切り替わりません。
回答1件
あなたの回答
tips
プレビュー