回答編集履歴

2

追記したコードに誤りがあったのでリファクタリング+修正

2017/01/14 03:37

投稿

miyabi-sun
miyabi-sun

スコア21158

test CHANGED
@@ -90,33 +90,25 @@
90
90
 
91
91
 
92
92
 
93
- 他にスマートな良い方法はないのですかね?
94
-
95
- jQuery自体がそれ関係ではスマートなのであまり考える必要はなさそうですが…
96
-
97
-
98
-
99
93
  ```JavaScript
100
94
 
101
- var $popUpSets = $(".popUp").get().map(function(popUp){
95
+ $(".popUp")
102
96
 
103
- return {
97
+ .css({
104
98
 
105
- popUp: $(popUp),
99
+ opacity:'0.8',
106
100
 
107
- button: $(popUp).next()
101
+ position:'absolute',
108
102
 
109
- }
103
+ display:'none'
110
104
 
111
- });
105
+ })
112
106
 
107
+ .each(function(){
113
108
 
109
+ var $popUp = $(this);
114
110
 
115
- $popUpSets.forEach(function($popUpSet){
116
-
117
- var $popUp = $popUpSet.popUp;
118
-
119
- var $button = $popUpSet.button;
111
+ var $button = $popUp.prev('a');
120
112
 
121
113
  $button.mouseover(function(){
122
114
 
@@ -141,3 +133,13 @@
141
133
  });
142
134
 
143
135
  ```
136
+
137
+
138
+
139
+ こうしてこうして…こうじゃ!!
140
+
141
+ これならそこそこといった感じですかね。
142
+
143
+
144
+
145
+ 別に最初の質問文のコードで良いと思います。

1

複数ポップアップ考慮を追記

2017/01/14 03:37

投稿

miyabi-sun
miyabi-sun

スコア21158

test CHANGED
@@ -75,3 +75,69 @@
75
75
  })
76
76
 
77
77
  ```
78
+
79
+
80
+
81
+ # 追記: 複数ポップアップがある場合を想定したゴリ押し解決策
82
+
83
+
84
+
85
+ 無理やり配列にして固めなおしてます。
86
+
87
+ このくらいサラッと書けないならば質問文のコードで我慢しましょうという話ですし、
88
+
89
+ さらっと書ける人は質問文のコードの方が綺麗なので作った下記のコードを削除するという話です。
90
+
91
+
92
+
93
+ 他にスマートな良い方法はないのですかね?
94
+
95
+ jQuery自体がそれ関係ではスマートなのであまり考える必要はなさそうですが…
96
+
97
+
98
+
99
+ ```JavaScript
100
+
101
+ var $popUpSets = $(".popUp").get().map(function(popUp){
102
+
103
+ return {
104
+
105
+ popUp: $(popUp),
106
+
107
+ button: $(popUp).next()
108
+
109
+ }
110
+
111
+ });
112
+
113
+
114
+
115
+ $popUpSets.forEach(function($popUpSet){
116
+
117
+ var $popUp = $popUpSet.popUp;
118
+
119
+ var $button = $popUpSet.button;
120
+
121
+ $button.mouseover(function(){
122
+
123
+ $popUp.fadeIn();
124
+
125
+ }).mouseout(function(){
126
+
127
+ $popUp.fadeOut();
128
+
129
+ }).mousemove(function(e){
130
+
131
+ $popUp.css({
132
+
133
+ 'top': e.pageY+10+'px',
134
+
135
+ 'left': e.pageX+10+'px'
136
+
137
+ })
138
+
139
+ });
140
+
141
+ });
142
+
143
+ ```