回答編集履歴

3

JSベタ書きの場合を追加。

2016/02/03 03:24

投稿

yamato_hikawa
yamato_hikawa

スコア2092

test CHANGED
@@ -82,9 +82,7 @@
82
82
 
83
83
 
84
84
 
85
-
86
-
87
- ```js:JS
85
+ ```javascript
88
86
 
89
87
  var SAMPLE = SAMPLE || {};
90
88
 
@@ -187,3 +185,55 @@
187
185
  new SAMPLE.Accordion();
188
186
 
189
187
  ```
188
+
189
+
190
+
191
+ もし、実装するなら私なら上記の書き方をしますが、
192
+
193
+ 投稿者さんの記述スタイルに近い書き方だと、こうなります。
194
+
195
+ ```javascript
196
+
197
+ $('.accordion_trigger').on('click', function() {
198
+
199
+ var $trigger = $(this),
200
+
201
+ $targetArea = $trigger.next();
202
+
203
+
204
+
205
+ $trigger.toggleClass('active');
206
+
207
+ $targetArea.slideToggle();
208
+
209
+ });
210
+
211
+
212
+
213
+ $('#drop_menu div ul li a').on('click', function() {
214
+
215
+ var $openTrigger = $(this),
216
+
217
+ targetId = $openTrigger.attr('href'),
218
+
219
+ $targetTrigger = $(targetId),
220
+
221
+ $targetArea = $targetTrigger.next();
222
+
223
+
224
+
225
+ $("#drop_menu div ul").slideUp('slow');
226
+
227
+
228
+
229
+ $targetTrigger.addClass('active');
230
+
231
+ $targetArea.slideDown();
232
+
233
+ });
234
+
235
+ ```
236
+
237
+
238
+
239
+

2

HTML、JSコード修正

2016/02/03 03:24

投稿

yamato_hikawa
yamato_hikawa

スコア2092

test CHANGED
@@ -26,7 +26,7 @@
26
26
 
27
27
 
28
28
 
29
- なおハンバーガーメニューをクリックした時、スライドダウンさせる要素をターゲットとして取得しなければなりません。
29
+ なおハンバーガーメニューをクリックした時、スライドダウンさせる要素をターゲットとして取得しなければなりません。
30
30
 
31
31
  そちらについては、aタグのhref属性設定されている「#anchor1」の文字列を利用して、
32
32
 
@@ -44,7 +44,7 @@
44
44
 
45
45
  <div>
46
46
 
47
- <ul>
47
+ <ul class="drop_menu_list">
48
48
 
49
49
  <li><a href="#anchor1" class="open_trigger">トグル要素1</a></li>
50
50
 
@@ -106,6 +106,8 @@
106
106
 
107
107
  this.$openTrigger = $('.open_trigger');
108
108
 
109
+ this.$dropMenuList = $('.drop_menu_list');
110
+
109
111
 
110
112
 
111
113
  this.bindEvent();
@@ -132,6 +134,8 @@
132
134
 
133
135
  e.preventDefault();
134
136
 
137
+ _self.slideUp();
138
+
135
139
  _self.slideDown(this);
136
140
 
137
141
  });
@@ -149,6 +153,12 @@
149
153
  $trigger.toggleClass('active');
150
154
 
151
155
  $targetArea.slideToggle();
156
+
157
+ },
158
+
159
+ slideUp: function(){
160
+
161
+ this.$dropMenuList.slideUp();
152
162
 
153
163
  },
154
164
 

1

ターゲット取得についての補足

2016/02/03 03:11

投稿

yamato_hikawa
yamato_hikawa

スコア2092

test CHANGED
@@ -23,6 +23,16 @@
23
23
 
24
24
 
25
25
  上記のような関係にします。スライドダウンであれば、そもそも開いている要素に対して行っても、閉じてしまうことはありません。
26
+
27
+
28
+
29
+ なおmハンバーガーメニューをクリックした時、スライドダウンさせる要素をターゲットとして取得しなければなりません。
30
+
31
+ そちらについては、aタグのhref属性設定されている「#anchor1」の文字列を利用して、
32
+
33
+ `$('#anchor1')`という形で取得できるように書き、ターゲットとなるトリガーをまず取得しています。
34
+
35
+ そのトリガーの隣の要素が、ターゲットとなるトグル要素として取得できます。
26
36
 
27
37
 
28
38