回答編集履歴

2

回答の追記

2019/10/18 06:40

投稿

退会済みユーザー
test CHANGED
@@ -129,3 +129,17 @@
129
129
  }
130
130
 
131
131
  ```
132
+
133
+
134
+
135
+ fadeout関数の中で呼ばれる$(this)は
136
+
137
+ **現在fadeOutしているjQueryObject**を指します。
138
+
139
+ その為、「.outer」が2つ(outer-typeが2つ)あっても
140
+
141
+ 押下したボタンから取得したouter-typeに合致する場合のみしか処理をしない
142
+
143
+ (outer要素は2つ消すが、cat()とdog()は1つのouter要素にしか処理をしない)
144
+
145
+ という動作を実現しています。

1

回答の修正

2019/10/18 06:40

投稿

退会済みユーザー
test CHANGED
@@ -49,3 +49,83 @@
49
49
 
50
50
 
51
51
  に変更するのはダメでしょうか?(innerクラスに対してはcat() dog() ape()を行わなず、表示操作のみ行う)
52
+
53
+
54
+
55
+
56
+
57
+
58
+
59
+
60
+
61
+ 追記:
62
+
63
+ すみません1つという要件を見逃していました。このコードで実現できます。
64
+
65
+
66
+
67
+ ```replace
68
+
69
+ $('button').click(function(){
70
+
71
+ const outerType = $(this).attr('data-outerType');
72
+
73
+ const innerType = $(this).attr('data-innerType');
74
+
75
+ $('.outer').fadeOut(200, function() {
76
+
77
+ if ($(this).attr('data-outerType') === outerType) {
78
+
79
+ cat(); dog();
80
+
81
+ }
82
+
83
+
84
+
85
+ });
86
+
87
+
88
+
89
+ $('.inner').fadeOut(200, function() {
90
+
91
+ });
92
+
93
+
94
+
95
+ $('.outer[data-outerType="'+outerType+'"]').delay(200).fadeIn(200, function() {
96
+
97
+ ape();
98
+
99
+ });
100
+
101
+
102
+
103
+ $('.inner[data-innerType="'+innerType+'"]').delay(200).fadeIn(200, function() {
104
+
105
+ });
106
+
107
+
108
+
109
+ });
110
+
111
+
112
+
113
+ function cat(outerType){
114
+
115
+ $('.outer').append('<p>cat</p>');
116
+
117
+ }
118
+
119
+ function dog(outerType){
120
+
121
+ $('.outer').append('<p>dog</p>');
122
+
123
+ }
124
+
125
+ function ape(){
126
+
127
+ $('.outer').append('<p>ape</p>');
128
+
129
+ }
130
+
131
+ ```