質問編集履歴
6
追記内のslide.jsの記述に変更を加えました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -251,9 +251,9 @@
|
|
251
251
|
var currentSlide = dir.find('.active'); // 表示されているスライドをcurrentSlideと名付ける。
|
252
252
|
$('.change-btn').show(); // 「前へ」と「次へ」は常に表示する。
|
253
253
|
if (currentSlide.hasClass('firstSlide')) {
|
254
|
-
|
254
|
+
dir.find('.prev-btn').hide(); // 表示されているスライドが最初のページの場合「前へ」は非表示。
|
255
255
|
} else if (currentSlide.hasClass('lastSlide')) {
|
256
|
-
|
256
|
+
dir.find('.next-btn').hide(); // 表示されているスライドが最後のページの場合「次へ」は非表示。
|
257
257
|
}
|
258
258
|
}
|
259
259
|
|
5
ご助言を元にしたコードを追記内に記載致しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -181,14 +181,8 @@
|
|
181
181
|
### 追記
|
182
182
|
|
183
183
|
ご回答を元にしたコードを追記致します。
|
184
|
-
こちらのコードでも、質問前と同様に上手く動きませんでした。状況は以下の通りです。
|
185
|
-
0. 「スライド1、2」に関わらず、最初にクリックしたスライドは全ての機能が上手く動く。
|
186
|
-
0. スライドを一旦閉じもう片方のスライドをクリックすると、中身(あ, い, う, か, き, くの文字)が無い空白のページが表示される。
|
187
|
-
|
184
|
+
ページの中身は独立して(他のスライドに依存する事なく)表示されるようになったものの、「←前へ 次へ→」ボタンのみまだ他のスライドでの動作と連動して表示されてしまいます。
|
188
|
-
0. 「← 前へ」や「次へ →」ボタンを押しても相変わらずページの中身が表示されないままページ遷移だけするが、一度「ページボタン」を押せばその番号に対応したページ内容が表示され、その後であれば「← 前へ」や「次へ →」ボタンも機能するようになる。
|
189
185
|
|
190
|
-
テストまでして頂き有難うございます。どこかコードに相違点がありますでしょうか。
|
191
|
-
|
192
186
|
**slide.html.erb**
|
193
187
|
```rails
|
194
188
|
<ul>
|
@@ -253,8 +247,9 @@
|
|
253
247
|
$(document).on('turbolinks:load', function() {
|
254
248
|
$(function() {
|
255
249
|
function toggleChangeBtn(dir){
|
250
|
+
var dir = $(this).parents('.slide-wrapper'); //対象のクラスを絞りたいが、絞れていない?
|
256
|
-
var currentSlide =
|
251
|
+
var currentSlide = dir.find('.active'); // 表示されているスライドをcurrentSlideと名付ける。
|
257
|
-
$('.change-btn').show();
|
252
|
+
$('.change-btn').show(); // 「前へ」と「次へ」は常に表示する。
|
258
253
|
if (currentSlide.hasClass('firstSlide')) {
|
259
254
|
$('.prev-btn').hide(); // 表示されているスライドが最初のページの場合「前へ」は非表示。
|
260
255
|
} else if (currentSlide.hasClass('lastSlide')) {
|
@@ -262,26 +257,24 @@
|
|
262
257
|
}
|
263
258
|
}
|
264
259
|
|
265
|
-
$('.index-btn').click(function() {
|
260
|
+
$('.index-btn').click(function() {
|
261
|
+
var dir = $(this).parents('.slide-wrapper'); //対象のクラスを絞る。
|
266
|
-
|
262
|
+
dir.find('.active').removeClass('active'); // 表示されていたスライドから.activeを取り除く。
|
267
263
|
var clickedIndex = $('.index-btn').index($(this));
|
268
|
-
$('.slide').eq(clickedIndex).addClass('active'); //
|
264
|
+
$('.slide').eq(clickedIndex).addClass('active'); // クリックされたページ番号と同じインデックス番号を持つスライドに.activeを付与する。
|
269
|
-
|
270
|
-
var dir = $(this).parents('.slide-wrapper');
|
271
265
|
toggleChangeBtn(dir);
|
272
266
|
});
|
273
267
|
|
274
|
-
$('.change-btn').click(function() {
|
268
|
+
$('.change-btn').click(function() {
|
269
|
+
var dir = $(this).parents('.slide-wrapper'); //対象のクラスを絞る。
|
275
|
-
var $displaySlide =
|
270
|
+
var $displaySlide = dir.find('.active'); // 表示されているスライドをdisplaySlideと名付ける。
|
276
271
|
$displaySlide.removeClass('active'); // .activeが付いていたスライドから.activeを取り除く。
|
277
272
|
if ($(this).hasClass('next-btn')) {
|
278
|
-
$displaySlide.next().addClass('active'); //
|
273
|
+
$displaySlide.next().addClass('active'); // .next-btnクラスがついていたら、その次のスライドにactiveを付与する。
|
279
274
|
}
|
280
275
|
else {
|
281
|
-
$displaySlide.prev().addClass('active'); //
|
276
|
+
$displaySlide.prev().addClass('active'); // .prev-btnクラスがついていたら、その前のスライドにactiveを付与する。
|
282
277
|
}
|
283
|
-
|
284
|
-
var dir = $(this).parents('.slide-wrapper');
|
285
278
|
toggleChangeBtn(dir);
|
286
279
|
});
|
287
280
|
})
|
4
追記内にて、引数の処理に関する記載を編集致しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -252,7 +252,7 @@
|
|
252
252
|
```js
|
253
253
|
$(document).on('turbolinks:load', function() {
|
254
254
|
$(function() {
|
255
|
-
function toggleChangeBtn(){
|
255
|
+
function toggleChangeBtn(dir){
|
256
256
|
var currentSlide = $('.active');
|
257
257
|
$('.change-btn').show();
|
258
258
|
if (currentSlide.hasClass('firstSlide')) {
|
@@ -262,7 +262,7 @@
|
|
262
262
|
}
|
263
263
|
}
|
264
264
|
|
265
|
-
$('.index-btn').click(function(
|
265
|
+
$('.index-btn').click(function() { // ページ番号をクリックした際の動き。
|
266
266
|
$('.active').removeClass('active'); // .activeクラスが付いていたスライドから.activeを取り除く。
|
267
267
|
var clickedIndex = $('.index-btn').index($(this));
|
268
268
|
$('.slide').eq(clickedIndex).addClass('active'); // 今クリックされたページ番号と同じインデックス番号を持つスライドに.activeを付与する。
|
@@ -271,7 +271,7 @@
|
|
271
271
|
toggleChangeBtn(dir);
|
272
272
|
});
|
273
273
|
|
274
|
-
$('.change-btn').click(function(
|
274
|
+
$('.change-btn').click(function() { // 前へ、次へのボタンをクリックした際の動き。
|
275
275
|
var $displaySlide = $('.active');
|
276
276
|
$displaySlide.removeClass('active'); // .activeが付いていたスライドから.activeを取り除く。
|
277
277
|
if ($(this).hasClass('next-btn')) {
|
3
「追記」内のslide.jsにあります引数部分を編集致しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -262,7 +262,7 @@
|
|
262
262
|
}
|
263
263
|
}
|
264
264
|
|
265
|
-
$('.index-btn').click(function() { // ページ番号をクリックした際の動き。
|
265
|
+
$('.index-btn').click(function(dir) { // ページ番号をクリックした際の動き。
|
266
266
|
$('.active').removeClass('active'); // .activeクラスが付いていたスライドから.activeを取り除く。
|
267
267
|
var clickedIndex = $('.index-btn').index($(this));
|
268
268
|
$('.slide').eq(clickedIndex).addClass('active'); // 今クリックされたページ番号と同じインデックス番号を持つスライドに.activeを付与する。
|
@@ -271,7 +271,7 @@
|
|
271
271
|
toggleChangeBtn(dir);
|
272
272
|
});
|
273
273
|
|
274
|
-
$('.change-btn').click(function() { // 前へ、次へのボタンをクリックした際の動き。
|
274
|
+
$('.change-btn').click(function(dir) { // 前へ、次へのボタンをクリックした際の動き。
|
275
275
|
var $displaySlide = $('.active');
|
276
276
|
$displaySlide.removeClass('active'); // .activeが付いていたスライドから.activeを取り除く。
|
277
277
|
if ($(this).hasClass('next-btn')) {
|
2
「追記」から下を追加致しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -176,4 +176,114 @@
|
|
176
176
|
ruby 2.6.4p104
|
177
177
|
RubyGems 3.0.3
|
178
178
|
Rails 5.2.3
|
179
|
-
jquery 1.12.4
|
179
|
+
jquery 1.12.4
|
180
|
+
|
181
|
+
### 追記
|
182
|
+
|
183
|
+
ご回答を元にしたコードを追記致します。
|
184
|
+
こちらのコードでも、質問前と同様に上手く動きませんでした。状況は以下の通りです。
|
185
|
+
0. 「スライド1、2」に関わらず、最初にクリックしたスライドは全ての機能が上手く動く。
|
186
|
+
0. スライドを一旦閉じもう片方のスライドをクリックすると、中身(あ, い, う, か, き, くの文字)が無い空白のページが表示される。
|
187
|
+
0. 更には1ページ目から必ず表示される訳ではなく、先ほどのスライドを何ページ目で閉じたかに依存して途中のページから表示されたりする。
|
188
|
+
0. 「← 前へ」や「次へ →」ボタンを押しても相変わらずページの中身が表示されないままページ遷移だけするが、一度「ページボタン」を押せばその番号に対応したページ内容が表示され、その後であれば「← 前へ」や「次へ →」ボタンも機能するようになる。
|
189
|
+
|
190
|
+
テストまでして頂き有難うございます。どこかコードに相違点がありますでしょうか。
|
191
|
+
|
192
|
+
**slide.html.erb**
|
193
|
+
```rails
|
194
|
+
<ul>
|
195
|
+
<li><div data-target="slide01" class="click-modal">スライド1</div>
|
196
|
+
<div id="slide01" class="modal-wrapper">
|
197
|
+
<div class="modal">
|
198
|
+
<div class="close-modal">
|
199
|
+
<i class="fa fa-2x fa-times"></i>
|
200
|
+
</div>
|
201
|
+
<div class="slide-wrapper">
|
202
|
+
<div class="slide-title">スライド1</div>
|
203
|
+
<div class="change-btn-wrapper">
|
204
|
+
<div class="change-btn prev-btn">← 前へ</div>
|
205
|
+
<div class="change-btn next-btn">次へ →</div>
|
206
|
+
</div>
|
207
|
+
<ul class="slides">
|
208
|
+
<li class="slide firstSlide active">あ</li>
|
209
|
+
<li class="slide">い</li>
|
210
|
+
<li class="slide lastSlide">う</li>
|
211
|
+
</ul>
|
212
|
+
<div class="index-btn-wrapper">
|
213
|
+
<div class="index-btn">1</div>
|
214
|
+
<div class="index-btn">2</div>
|
215
|
+
<div class="index-btn">3</div>
|
216
|
+
</div>
|
217
|
+
</div>
|
218
|
+
</div>
|
219
|
+
</div>
|
220
|
+
</li>
|
221
|
+
|
222
|
+
<li><div data-target="slide02" class="click-modal">スライド2</div>
|
223
|
+
<div id="slide02" class="modal-wrapper">
|
224
|
+
<div class="modal">
|
225
|
+
<div class="close-modal">
|
226
|
+
<i class="fa fa-2x fa-times"></i>
|
227
|
+
</div>
|
228
|
+
<div class="slide-wrapper">
|
229
|
+
<div class="slide-title">スライド2</div>
|
230
|
+
<div class="change-btn-wrapper">
|
231
|
+
<div class="change-btn prev-btn">← 前へ</div>
|
232
|
+
<div class="change-btn next-btn">次へ →</div>
|
233
|
+
</div>
|
234
|
+
<ul class="slides">
|
235
|
+
<li class="slide firstSlide active">か</li>
|
236
|
+
<li class="slide">き</li>
|
237
|
+
<li class="slide lastSlide">く</li>
|
238
|
+
</ul>
|
239
|
+
<div class="index-btn-wrapper">
|
240
|
+
<div class="index-btn">1</div>
|
241
|
+
<div class="index-btn">2</div>
|
242
|
+
<div class="index-btn">3</div>
|
243
|
+
</div>
|
244
|
+
</div>
|
245
|
+
</div>
|
246
|
+
</div>
|
247
|
+
</li>
|
248
|
+
</ul>
|
249
|
+
```
|
250
|
+
|
251
|
+
**slide.js**
|
252
|
+
```js
|
253
|
+
$(document).on('turbolinks:load', function() {
|
254
|
+
$(function() {
|
255
|
+
function toggleChangeBtn(){
|
256
|
+
var currentSlide = $('.active');
|
257
|
+
$('.change-btn').show();
|
258
|
+
if (currentSlide.hasClass('firstSlide')) {
|
259
|
+
$('.prev-btn').hide(); // 表示されているスライドが最初のページの場合「前へ」は非表示。
|
260
|
+
} else if (currentSlide.hasClass('lastSlide')) {
|
261
|
+
$('.next-btn').hide(); // 表示されているスライドが最後のページの場合「次へ」は非表示。
|
262
|
+
}
|
263
|
+
}
|
264
|
+
|
265
|
+
$('.index-btn').click(function() { // ページ番号をクリックした際の動き。
|
266
|
+
$('.active').removeClass('active'); // .activeクラスが付いていたスライドから.activeを取り除く。
|
267
|
+
var clickedIndex = $('.index-btn').index($(this));
|
268
|
+
$('.slide').eq(clickedIndex).addClass('active'); // 今クリックされたページ番号と同じインデックス番号を持つスライドに.activeを付与する。
|
269
|
+
|
270
|
+
var dir = $(this).parents('.slide-wrapper');
|
271
|
+
toggleChangeBtn(dir);
|
272
|
+
});
|
273
|
+
|
274
|
+
$('.change-btn').click(function() { // 前へ、次へのボタンをクリックした際の動き。
|
275
|
+
var $displaySlide = $('.active');
|
276
|
+
$displaySlide.removeClass('active'); // .activeが付いていたスライドから.activeを取り除く。
|
277
|
+
if ($(this).hasClass('next-btn')) {
|
278
|
+
$displaySlide.next().addClass('active'); // 今クリックしたボタンに.next-btnクラスがついていたら、その次のスライドにactiveを付与する。
|
279
|
+
}
|
280
|
+
else {
|
281
|
+
$displaySlide.prev().addClass('active'); // 今クリックしたボタンに.prev-btnクラスがついていたら、その前のスライドにactiveを付与する。
|
282
|
+
}
|
283
|
+
|
284
|
+
var dir = $(this).parents('.slide-wrapper');
|
285
|
+
toggleChangeBtn(dir);
|
286
|
+
});
|
287
|
+
})
|
288
|
+
});
|
289
|
+
```
|
1
タグにJavaScriptを追加致しました。
title
CHANGED
File without changes
|
body
CHANGED
File without changes
|