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

回答編集履歴

6

ご助力いただいた方のお名前を追記

2019/06/19 00:15

投稿

narutona
narutona

スコア23

answer CHANGED
@@ -2,7 +2,7 @@
2
2
  ([https://jsfiddle.net/bkfer0zo/](https://jsfiddle.net/bkfer0zo/))
3
3
 
4
4
 
5
- ご回答いただいたyambejp様、jun68ykt様、think49様、どうもありがとうございました。
5
+ ご回答いただいたyambejp様、jun68ykt様、think49様、そしてご意見をくださったmts10806様、皆様どうもありがとうございました。
6
6
 
7
7
  ```jQuery
8
8
  // メニュー

5

ご回答いただいた方のお名前を追加

2019/06/19 00:15

投稿

narutona
narutona

スコア23

answer CHANGED
@@ -2,7 +2,7 @@
2
2
  ([https://jsfiddle.net/bkfer0zo/](https://jsfiddle.net/bkfer0zo/))
3
3
 
4
4
 
5
- ご回答いただいたyambejp様、jun68ykt様、どうもありがとうございました。
5
+ ご回答いただいたyambejp様、jun68ykt様、think49様、どうもありがとうございました。
6
6
 
7
7
  ```jQuery
8
8
  // メニュー

4

リンクを追加

2019/06/19 00:14

投稿

narutona
narutona

スコア23

answer CHANGED
@@ -1,5 +1,7 @@
1
1
  素人があれこれ考えた結果でお目汚しかと思いますが、下記で実現したかった➀➁➂➃がすべてできました。
2
+ ([https://jsfiddle.net/bkfer0zo/](https://jsfiddle.net/bkfer0zo/))
2
3
 
4
+
3
5
  ご回答いただいたyambejp様、jun68ykt様、どうもありがとうございました。
4
6
 
5
7
  ```jQuery

3

解決したコードを修正

2019/06/19 00:06

投稿

narutona
narutona

スコア23

answer CHANGED
@@ -1,5 +1,7 @@
1
- 自己解決したと思い下記を書いてましたが補足の➃が実現できせんでしたので、「解決済み」を元に戻し、引き続きご回答を募らせて頂ければと思います
1
+ 素人があれこれ考え結果でお目汚しかと思いますが、下記で実現したかった➀➁➂➃がすべてできました。
2
2
 
3
+ ご回答いただいたyambejp様、jun68ykt様、どうもありがとうございました。
4
+
3
5
  ```jQuery
4
6
  // メニュー
5
7
  var menus = `
@@ -10,16 +12,25 @@
10
12
  `;
11
13
 
12
14
  // ➀ボタンクリックでメニュー表示
15
+ // ➃複数のメニューが同時に表示されることは避けたい。
13
16
  $(document).on('click','.E > button:not(.is_click)', function(e){
14
- e.stopPropagation();
17
+ e.stopPropagation();
18
+ $('.menus').remove();
15
19
  $(this).addClass('is_click');
16
20
  $(this).after(menus);
17
21
  });
18
22
 
19
- // ➁もう一度クリックでメニュー非表示し、➂それ以外のクリックでも非表示にする。
23
+ // ➁もう一度クリックでメニュー非表示
24
+ // ➂ボタン以外のクリックでメニュー非表示
20
25
  $(document).on('click','body', function(){
21
26
  $('.E > button').removeClass('is_click');
22
27
  $('.menus').remove();
23
28
  });
24
29
 
30
+ // ついでにメニュー項目のクリックでメニューが閉じないようにする。
31
+ $(document).on('click','.menus li', function(e){
32
+ e.stopPropagation();
33
+ const menu = $(this).text();
34
+ alert('実行するメニューは'+menu+'です。');
35
+ });
25
36
  ```

2

解決していたかったため修正

2019/06/19 00:00

投稿

narutona
narutona

スコア23

answer CHANGED
@@ -1,1 +1,25 @@
1
+ 自己解決したと思い下記を書いてましたが補足の➃が実現できてませんでしたので、「解決済み」を元に戻し、引き続きご回答を募らせて頂ければと思います。
2
+
1
- 間違っていました。。
3
+ ```jQuery
4
+ // メニュー
5
+ var menus = `
6
+ <ul class="menus">
7
+ <li>たべる</li>
8
+ <li>さわる</li>
9
+ </ul>
10
+ `;
11
+
12
+ // ➀ボタンクリックでメニュー表示
13
+ $(document).on('click','.E > button:not(.is_click)', function(e){
14
+ e.stopPropagation();
15
+ $(this).addClass('is_click');
16
+ $(this).after(menus);
17
+ });
18
+
19
+ // ➁もう一度クリックでメニュー非表示し、➂それ以外のクリックでも非表示にする。
20
+ $(document).on('click','body', function(){
21
+ $('.E > button').removeClass('is_click');
22
+ $('.menus').remove();
23
+ });
24
+
25
+ ```

1

間違っていました。

2019/06/18 23:49

投稿

narutona
narutona

スコア23

answer CHANGED
@@ -1,28 +1,1 @@
1
- ・「それ以外のクリック」を「bodyのクリック」としました。(➁➂)
2
- ・ボタンのクリックについてはハプリングというのを抑えることで実現できました。(➀)
3
-
4
- ご回答いただいたjun68ykt様、yambejp様、本当にありがとうございました。
5
-
6
- ```jquery
1
+ 間違っていました。。
7
- // メニュー
8
- var menus = `
9
- <ul class="menus">
10
- <li>たべる</li>
11
- <li>さわる</li>
12
- </ul>
13
- `;
14
-
15
- // ➀ボタンクリックでメニュー表示
16
- $(document).on('click','.E > button:not(.is_click)', function(e){
17
- e.stopPropagation();
18
- $(this).addClass('is_click');
19
- $(this).after(menus);
20
- });
21
-
22
- // ➁もう一度クリックでメニュー非表示し、➂それ以外のクリックでも非表示にする。
23
- $(document).on('click','body', function(){
24
- $('.E > button').removeClass('is_click');
25
- $('.menus').remove();
26
- });
27
-
28
- ```