回答編集履歴

3

コード追加

2020/01/27 10:46

投稿

hatena19
hatena19

スコア33775

test CHANGED
@@ -48,7 +48,77 @@
48
48
 
49
49
  ---
50
50
 
51
+ > カレント開閉の処理で、カレントの時の処理で、親メニュー要素に is-toggle-accNav--openクラスを付与するコードが必要に思います。
51
52
 
53
+
54
+
55
+ > DOMツリー構造をみて、辿っていけばいいでしょう。
56
+
57
+
58
+
59
+ > 子メニューがカレントの場合は、祖先の.mainNavKids の一つ前の要素にis-toggle-accNav--openクラスを付与すればいいので、下記のような感じで。
60
+
61
+ `$(this).parents('.mainNavKids').prev().addClass('is-toggle-accNav--open');`
62
+
63
+
64
+
65
+ 親メニューがカレントの場合は、別途コードが必要になりますが、それはご自分で考えてみてください。
66
+
67
+
68
+
69
+ ```js
70
+
71
+ //Nav
72
+
73
+ $(function(){
74
+
75
+ $('.is-toggle-accNav').each(function(){
76
+
77
+ $(this).on('click',function(){
78
+
79
+ $(this).toggleClass('is-toggle-accNav--open');
80
+
81
+ $("+.mainNavKids",this).slideToggle()
82
+
83
+ return false;
84
+
85
+ });
86
+
87
+ });
88
+
89
+ });
90
+
91
+
92
+
93
+ //current
94
+
95
+ $(function(){
96
+
97
+ $('.mainNav__item__link').each(function(){
98
+
99
+ var $href = $(this).attr('href');
100
+
101
+ if($href === 'https://teratail.com') {
102
+
103
+ $(this).parent('.mainNavKids__item').addClass('current');
104
+
105
+ $(this).parents('.mainNav__item').addClass('current');
106
+
107
+ $(this).parents('.mainNavKids').addClass('is-mainNavKids--current');
108
+
109
+ $(this).parents('.mainNavKids').prev().addClass('is-toggle-accNav--open');
110
+
111
+ } else {
112
+
113
+ $(this).parent().removeClass('current');
114
+
115
+ }
116
+
117
+ });
118
+
119
+ });
120
+
121
+ ```
52
122
 
53
123
 
54
124
 

2

サンプルリンクの追加

2020/01/27 10:46

投稿

hatena19
hatena19

スコア33775

test CHANGED
@@ -41,3 +41,15 @@
41
41
  }
42
42
 
43
43
  ```
44
+
45
+
46
+
47
+ サンプルを作成したのでリンク置いておきます。
48
+
49
+ ---
50
+
51
+
52
+
53
+
54
+
55
+ [動作確認用サンプル](https://codepen.io/hatena19/pen/povBzKm)

1

追記

2020/01/27 09:55

投稿

hatena19
hatena19

スコア33775

test CHANGED
@@ -15,3 +15,29 @@
15
15
 
16
16
 
17
17
  とりあえず上記を修正して希望の動作になるか確認してみてください。
18
+
19
+
20
+
21
+ 追記
22
+
23
+ ---
24
+
25
+ あと、初期状態で、カレントなら開いた状態、それ以外は閉じた状態にしておきたいのなら、CSSで設定しておきましょう。
26
+
27
+
28
+
29
+ ```css
30
+
31
+ .mainNavKids {
32
+
33
+ display: none;
34
+
35
+ }
36
+
37
+ .is-mainNavKids--current {
38
+
39
+ display: block;
40
+
41
+ }
42
+
43
+ ```