teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

コード追加

2020/01/27 10:46

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -23,6 +23,41 @@
23
23
 
24
24
  サンプルを作成したのでリンク置いておきます。
25
25
  ---
26
+ > カレント開閉の処理で、カレントの時の処理で、親メニュー要素に is-toggle-accNav--openクラスを付与するコードが必要に思います。
26
27
 
28
+ > DOMツリー構造をみて、辿っていけばいいでしょう。
27
29
 
30
+ > 子メニューがカレントの場合は、祖先の.mainNavKids の一つ前の要素にis-toggle-accNav--openクラスを付与すればいいので、下記のような感じで。
31
+ `$(this).parents('.mainNavKids').prev().addClass('is-toggle-accNav--open');`
32
+
33
+ 親メニューがカレントの場合は、別途コードが必要になりますが、それはご自分で考えてみてください。
34
+
35
+ ```js
36
+ //Nav
37
+ $(function(){
38
+ $('.is-toggle-accNav').each(function(){
39
+ $(this).on('click',function(){
40
+ $(this).toggleClass('is-toggle-accNav--open');
41
+ $("+.mainNavKids",this).slideToggle()
42
+ return false;
43
+ });
44
+ });
45
+ });
46
+
47
+ //current
48
+ $(function(){
49
+ $('.mainNav__item__link').each(function(){
50
+ var $href = $(this).attr('href');
51
+ if($href === 'https://teratail.com') {
52
+ $(this).parent('.mainNavKids__item').addClass('current');
53
+ $(this).parents('.mainNav__item').addClass('current');
54
+ $(this).parents('.mainNavKids').addClass('is-mainNavKids--current');
55
+ $(this).parents('.mainNavKids').prev().addClass('is-toggle-accNav--open');
56
+ } else {
57
+ $(this).parent().removeClass('current');
58
+ }
59
+ });
60
+ });
61
+ ```
62
+
28
63
  [動作確認用サンプル](https://codepen.io/hatena19/pen/povBzKm)

2

サンプルリンクの追加

2020/01/27 10:46

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -19,4 +19,10 @@
19
19
  .is-mainNavKids--current {
20
20
  display: block;
21
21
  }
22
- ```
22
+ ```
23
+
24
+ サンプルを作成したのでリンク置いておきます。
25
+ ---
26
+
27
+
28
+ [動作確認用サンプル](https://codepen.io/hatena19/pen/povBzKm)

1

追記

2020/01/27 09:55

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -6,4 +6,17 @@
6
6
 
7
7
  `(this).toggleClass('is-toggle-accNav--open');`
8
8
 
9
- とりあえず上記を修正して希望の動作になるか確認してみてください。
9
+ とりあえず上記を修正して希望の動作になるか確認してみてください。
10
+
11
+ 追記
12
+ ---
13
+ あと、初期状態で、カレントなら開いた状態、それ以外は閉じた状態にしておきたいのなら、CSSで設定しておきましょう。
14
+
15
+ ```css
16
+ .mainNavKids {
17
+ display: none;
18
+ }
19
+ .is-mainNavKids--current {
20
+ display: block;
21
+ }
22
+ ```