回答編集履歴

1

コードが変だったので改修

2019/12/20 13:16

投稿

miyabi-sun
miyabi-sun

スコア21203

test CHANGED
@@ -208,17 +208,35 @@
208
208
 
209
209
  ```js
210
210
 
211
+ // ボタンを連打された時に変な挙動になる気がしたので、
212
+
213
+ // 先受けになるがフラグを用意しておいた
214
+
211
215
  $('.accordion_menu').each(function(){
212
216
 
213
- $elm = $(this);
217
+ var $elm = $(this);
218
+
219
+ var isOpened = false;
214
220
 
215
221
  $elm.find('.appear').hide();
216
222
 
217
- $elm.('.button').click(function(){
223
+ $elm.find('.button').click(function(){
224
+
218
-
225
+ isOpened = !isOpened;
226
+
227
+ if (isOpened) {
228
+
219
- $('.appear').slideToggle();
229
+ $elm.find('.appear').slideDown();
230
+
220
-
231
+ $(this).addClass('open');
232
+
233
+ } else {
234
+
235
+ $elm.find('.appear').slideUp();
236
+
221
- $(this).toggleClass('open');
237
+ $(this).removeClass('open');
238
+
239
+ }
222
240
 
223
241
  return false;
224
242
 
@@ -230,14 +248,26 @@
230
248
 
231
249
 
232
250
 
251
+ 動作は未検証だが、これでアコーディオンメニューというコンポーネントの作成は完了。
252
+
253
+ 後はHTML上で`.accordion_menu`クラスを付与してやり、
254
+
255
+ `.button`クラスをポチポチすれば`.appear`クラスの表示・非表示が切り替わるようになる。
256
+
257
+ アコーディオンが増えてもHTMLの改修のみで完了するようになる。
258
+
259
+
260
+
233
261
  jQuery(JS)とHTMLとCSSは決してひとつでは成り立たない。
234
262
 
235
263
  不味いHTMLの設計をJSとCSSのみで吸収するとコードが歪になり、
236
264
 
237
- 酷いコードを納品することになってしまう。
265
+ 継ぎ接ぎの布を充てがうようなコードを納品することになってしまう。
238
266
 
239
267
 
240
268
 
241
269
  良いHTMLならばeachやfor文でスパッと一撃で解決出来るコードになる。
242
270
 
243
271
  これを目指して相互に少しずつ改良していくようにしよう。
272
+
273
+ どちらの設計力も身につけば、一撃で素晴らしいHTMLやJSコードを作って納品出来るようになる。