回答編集履歴

2

調整

2019/01/21 01:03

投稿

yambejp
yambejp

スコア114845

test CHANGED
@@ -121,3 +121,43 @@
121
121
  ```
122
122
 
123
123
  timerIdは別の処理と競合するのでターゲットの数だけ用意しておきます
124
+
125
+
126
+
127
+ # 追記
128
+
129
+ よく考えたらarticleにhoverをかませばいいのでは?
130
+
131
+ ```CSS
132
+
133
+ <style>
134
+
135
+ .menu{display:none}
136
+
137
+ article:hover>.name+.menu{display:block}
138
+
139
+ </style>
140
+
141
+
142
+
143
+ <main>
144
+
145
+ <article>
146
+
147
+ <div class="name"><p>jon</p></div>
148
+
149
+ <div class="menu">jonのmenu</div>
150
+
151
+ </article>
152
+
153
+ <article>
154
+
155
+ <div class="name"><p>smith</p></div>
156
+
157
+ <div class="menu">smithのmenu</div>
158
+
159
+ </article>
160
+
161
+ </main>
162
+
163
+ ```

1

sample

2019/01/21 01:03

投稿

yambejp
yambejp

スコア114845

test CHANGED
@@ -13,3 +13,111 @@
13
13
  menuを非表示にする処理をキャンセルする
14
14
 
15
15
  もちろんその場合menuのmouseout処理が別途必要
16
+
17
+
18
+
19
+ # sample
20
+
21
+
22
+
23
+ ```javascript
24
+
25
+ <style>
26
+
27
+ article{background-Color:aqua}
28
+
29
+ .name p{background-Color:yellow;width:200px;}
30
+
31
+ .menu{background-Color:lime;width:200px;}
32
+
33
+ </style>
34
+
35
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
36
+
37
+ <script>
38
+
39
+ $(function(){
40
+
41
+ var timerId=Array($('.name p').length).fill(null);
42
+
43
+ $('.name p').on('mouseover',function(){
44
+
45
+ var idx=$('.name p').index(this);
46
+
47
+ clearTimeout(timerId[idx]);
48
+
49
+ $('.menu').eq(idx).slideDown();
50
+
51
+ }).on('mouseout',function(){
52
+
53
+ var idx=$('.name p').index(this);
54
+
55
+ timerId[idx]=setTimeout(function(){
56
+
57
+ $('.menu').eq(idx).slideUp();
58
+
59
+ },100);
60
+
61
+ });
62
+
63
+ $('.menu').on('mouseover',function(){
64
+
65
+ var idx=$('.menu').index(this);
66
+
67
+ clearTimeout(timerId[idx]);
68
+
69
+ }).on('mouseout',function(){
70
+
71
+ var idx=$('.menu').index(this);
72
+
73
+ timerId[idx]=setTimeout(function(){
74
+
75
+ $('.menu').eq(idx).slideUp();
76
+
77
+ },100);
78
+
79
+ });
80
+
81
+ });
82
+
83
+ </script>
84
+
85
+ <main>
86
+
87
+ <article>
88
+
89
+ <div class="name"><p>aaa</p></div>
90
+
91
+ <div class="menu" style="display:none">aaaのmenu</div>
92
+
93
+ </article>
94
+
95
+ <article>
96
+
97
+ <div class="name"><p>bbb</p></div>
98
+
99
+ <div class="menu" style="display:none">bbbのmenu</div>
100
+
101
+ </article>
102
+
103
+ <article>
104
+
105
+ <div class="name"><p>ccc</p></div>
106
+
107
+ <div class="menu" style="display:none">cccのmenu</div>
108
+
109
+ </article>
110
+
111
+ <article>
112
+
113
+ <div class="name"><p>ddd</p></div>
114
+
115
+ <div class="menu" style="display:none">dddのmenu</div>
116
+
117
+ </article>
118
+
119
+ </main>
120
+
121
+ ```
122
+
123
+ timerIdは別の処理と競合するのでターゲットの数だけ用意しておきます