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

回答編集履歴

1

ちょっと改良。

2018/11/24 18:54

投稿

kei344
kei344

スコア69625

answer CHANGED
@@ -1,11 +1,11 @@
1
1
  ```JavaScript
2
2
  const $li = document.querySelectorAll( '#sw>li' );
3
3
  document.querySelector( '#sw' ).onclick = e => {
4
- if ( e.target.tagName !== 'LI' ) return;
4
+ if ( e.target === e.currentTarget ) return;
5
- $li.forEach( n => n.classList.remove( 'mizu' ) );
6
- e.target.classList.add( 'mizu' );
5
+ let item = e.target.closest( 'li' );
6
+ $li.forEach( n => n.classList[ item === n ? 'add' : 'remove' ]( 'mizu' ) );
7
- };
7
+ }; // 編集前のコードがli要素の中にあるHTML要素に対応できていなかったのを修正
8
- ```**動くサンプル:**[https://jsfiddle.net/2n8Lw4eu/](https://jsfiddle.net/2n8Lw4eu/)
8
+ ```**動くサンプル:**[https://jsfiddle.net/2n8Lw4eu/2/](https://jsfiddle.net/2n8Lw4eu/2/)
9
9
 
10
10
  ---
11
11
 
@@ -13,4 +13,7 @@
13
13
  [https://developer.mozilla.org/ja/docs/Web/API/Document/querySelector](https://developer.mozilla.org/ja/docs/Web/API/Document/querySelector)
14
14
 
15
15
  【Document.querySelectorAll() - Web API | MDN】
16
- [https://developer.mozilla.org/ja/docs/Web/API/Document/querySelectorAll](https://developer.mozilla.org/ja/docs/Web/API/Document/querySelectorAll)
16
+ [https://developer.mozilla.org/ja/docs/Web/API/Document/querySelectorAll](https://developer.mozilla.org/ja/docs/Web/API/Document/querySelectorAll)
17
+
18
+ 【Element.closest() - Web API | MDN】
19
+ [https://developer.mozilla.org/ja/docs/Web/API/Element/closest](https://developer.mozilla.org/ja/docs/Web/API/Element/closest)