回答編集履歴

6

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

2019/06/19 00:15

投稿

narutona
narutona

スコア23

test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
 
8
8
 
9
- ご回答いただいたyambejp様、jun68ykt様、think49様、どうもありがとうございました。
9
+ ご回答いただいたyambejp様、jun68ykt様、think49様、そしてご意見をくださったmts10806様、皆様どうもありがとうございました。
10
10
 
11
11
 
12
12
 

5

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

2019/06/19 00:15

投稿

narutona
narutona

スコア23

test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
 
8
8
 
9
- ご回答いただいたyambejp様、jun68ykt様、どうもありがとうございました。
9
+ ご回答いただいたyambejp様、jun68ykt様、think49様、どうもありがとうございました。
10
10
 
11
11
 
12
12
 

4

リンクを追加

2019/06/19 00:14

投稿

narutona
narutona

スコア23

test CHANGED
@@ -1,4 +1,8 @@
1
1
  素人があれこれ考えた結果でお目汚しかと思いますが、下記で実現したかった➀➁➂➃がすべてできました。
2
+
3
+ ([https://jsfiddle.net/bkfer0zo/](https://jsfiddle.net/bkfer0zo/))
4
+
5
+
2
6
 
3
7
 
4
8
 

3

解決したコードを修正

2019/06/19 00:06

投稿

narutona
narutona

スコア23

test CHANGED
@@ -1,4 +1,8 @@
1
- 自己解決と思い下記を書いてましたが補足の➃が実現できせんでしたので、「解決済み」を元に戻し、引き続きご回答を募らせて頂ければと思います
1
+ 素人があれこれ考えた結果でお目汚と思いますが、下記で実現したかった➀➁➂➃がすべてできました。
2
+
3
+
4
+
5
+ ご回答いただいたyambejp様、jun68ykt様、どうもありがとうございました。
2
6
 
3
7
 
4
8
 
@@ -22,9 +26,13 @@
22
26
 
23
27
  // ➀ボタンクリックでメニュー表示
24
28
 
29
+ // ➃複数のメニューが同時に表示されることは避けたい。
30
+
25
31
  $(document).on('click','.E > button:not(.is_click)', function(e){
26
32
 
27
- e.stopPropagation();
33
+ e.stopPropagation();
34
+
35
+ $('.menus').remove();
28
36
 
29
37
  $(this).addClass('is_click');
30
38
 
@@ -34,7 +42,9 @@
34
42
 
35
43
 
36
44
 
37
- // ➁もう一度クリックでメニュー非表示し、➂それ以外のクリックでも非表示にする。
45
+ // ➁もう一度クリックでメニュー非表示
46
+
47
+ // ➂ボタン以外のクリックでメニュー非表示
38
48
 
39
49
  $(document).on('click','body', function(){
40
50
 
@@ -46,4 +56,16 @@
46
56
 
47
57
 
48
58
 
59
+ // ついでにメニュー項目のクリックでメニューが閉じないようにする。
60
+
61
+ $(document).on('click','.menus li', function(e){
62
+
63
+ e.stopPropagation();
64
+
65
+ const menu = $(this).text();
66
+
67
+ alert('実行するメニューは'+menu+'です。');
68
+
69
+ });
70
+
49
71
  ```

2

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

2019/06/19 00:00

投稿

narutona
narutona

スコア23

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

1

間違っていました。

2019/06/18 23:49

投稿

narutona
narutona

スコア23

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