質問編集履歴

6

追記内のslide.jsの記述に変更を加えました。

2021/06/03 05:21

投稿

punchan36
punchan36

スコア105

test CHANGED
File without changes
test CHANGED
@@ -504,11 +504,11 @@
504
504
 
505
505
  if (currentSlide.hasClass('firstSlide')) {
506
506
 
507
- $('.prev-btn').hide(); // 表示されているスライドが最初のページの場合「前へ」は非表示。
507
+ dir.find('.prev-btn').hide(); // 表示されているスライドが最初のページの場合「前へ」は非表示。
508
508
 
509
509
  } else if (currentSlide.hasClass('lastSlide')) {
510
510
 
511
- $('.next-btn').hide(); // 表示されているスライドが最後のページの場合「次へ」は非表示。
511
+ dir.find('.next-btn').hide(); // 表示されているスライドが最後のページの場合「次へ」は非表示。
512
512
 
513
513
  }
514
514
 

5

ご助言を元にしたコードを追記内に記載致しました。

2021/06/03 05:21

投稿

punchan36
punchan36

スコア105

test CHANGED
File without changes
test CHANGED
@@ -364,19 +364,7 @@
364
364
 
365
365
  ご回答を元にしたコードを追記致します。
366
366
 
367
- こちらのコードでも、質問前と同様に上手く動きませんでした。状況は以下の通りです。
368
-
369
- 0. 「スライド1、2」に関わらず、最初にクリックしたスライドは全ての機能が上手く動く。
370
-
371
- 0. スライドを一旦閉じもう片方のスライドをクリックすると、中身(あ, い, う, か, き, くの文字)が無い空白のページが表示される。
372
-
373
- 0. 更には1ページ目から必ず表示される訳では先ほどのスライドを何ページ目閉じたかに依存して途中のページから表示されたり
367
+ ページの中身は独立して(他のスライドに依存する事なく)表示されるようにったものの「←前へ 次へ→」ボタンみまだ他のスライドでの動作と連動して表示されてしまいます。
374
-
375
- 0. 「← 前へ」や「次へ →」ボタンを押しても相変わらずページの中身が表示されないままページ遷移だけするが、一度「ページボタン」を押せばその番号に対応したページ内容が表示され、その後であれば「← 前へ」や「次へ →」ボタンも機能するようになる。
376
-
377
-
378
-
379
- テストまでして頂き有難うございます。どこかコードに相違点がありますでしょうか。
380
368
 
381
369
 
382
370
 
@@ -508,9 +496,11 @@
508
496
 
509
497
  function toggleChangeBtn(dir){
510
498
 
499
+ var dir = $(this).parents('.slide-wrapper'); //対象のクラスを絞りたいが、絞れていない?
500
+
511
- var currentSlide = $('.active');
501
+ var currentSlide = dir.find('.active'); // 表示されているスライドをcurrentSlideと名付ける。
512
-
502
+
513
- $('.change-btn').show();
503
+ $('.change-btn').show(); // 「前へ」と「次へ」は常に表示する。
514
504
 
515
505
  if (currentSlide.hasClass('firstSlide')) {
516
506
 
@@ -526,17 +516,15 @@
526
516
 
527
517
 
528
518
 
529
- $('.index-btn').click(function() { // ページ番号をクリックした際の動き。
519
+ $('.index-btn').click(function() {
520
+
530
-
521
+ var dir = $(this).parents('.slide-wrapper'); //対象のクラスを絞る。
522
+
531
- $('.active').removeClass('active'); // .activeクラスが付いていたスライドから.activeを取り除く。
523
+ dir.find('.active').removeClass('active'); // 表示されていたスライドから.activeを取り除く。
532
524
 
533
525
  var clickedIndex = $('.index-btn').index($(this));
534
526
 
535
- $('.slide').eq(clickedIndex).addClass('active'); // クリックされたページ番号と同じインデックス番号を持つスライドに.activeを付与する。
527
+ $('.slide').eq(clickedIndex).addClass('active'); // クリックされたページ番号と同じインデックス番号を持つスライドに.activeを付与する。
536
-
537
-
538
-
539
- var dir = $(this).parents('.slide-wrapper');
540
528
 
541
529
  toggleChangeBtn(dir);
542
530
 
@@ -544,28 +532,26 @@
544
532
 
545
533
 
546
534
 
547
- $('.change-btn').click(function() { // 前へ、次へのボタンをクリックした際の動き。
535
+ $('.change-btn').click(function() {
536
+
548
-
537
+ var dir = $(this).parents('.slide-wrapper'); //対象のクラスを絞る。
538
+
549
- var $displaySlide = $('.active');
539
+ var $displaySlide = dir.find('.active'); // 表示されているスライドをdisplaySlideと名付ける。
550
540
 
551
541
  $displaySlide.removeClass('active'); // .activeが付いていたスライドから.activeを取り除く。
552
542
 
553
543
  if ($(this).hasClass('next-btn')) {
554
544
 
555
- $displaySlide.next().addClass('active'); // 今クリックしたボタンに.next-btnクラスがついていたら、その次のスライドにactiveを付与する。
545
+ $displaySlide.next().addClass('active'); // .next-btnクラスがついていたら、その次のスライドにactiveを付与する。
556
546
 
557
547
  }
558
548
 
559
549
  else {
560
550
 
561
- $displaySlide.prev().addClass('active'); // 今クリックしたボタンに.prev-btnクラスがついていたら、その前のスライドにactiveを付与する。
551
+ $displaySlide.prev().addClass('active'); // .prev-btnクラスがついていたら、その前のスライドにactiveを付与する。
562
552
 
563
553
  }
564
554
 
565
-
566
-
567
- var dir = $(this).parents('.slide-wrapper');
568
-
569
555
  toggleChangeBtn(dir);
570
556
 
571
557
  });

4

追記内にて、引数の処理に関する記載を編集致しました。

2021/06/03 03:33

投稿

punchan36
punchan36

スコア105

test CHANGED
File without changes
test CHANGED
@@ -506,7 +506,7 @@
506
506
 
507
507
  $(function() {
508
508
 
509
- function toggleChangeBtn(){
509
+ function toggleChangeBtn(dir){
510
510
 
511
511
  var currentSlide = $('.active');
512
512
 
@@ -526,7 +526,7 @@
526
526
 
527
527
 
528
528
 
529
- $('.index-btn').click(function(dir) { // ページ番号をクリックした際の動き。
529
+ $('.index-btn').click(function() { // ページ番号をクリックした際の動き。
530
530
 
531
531
  $('.active').removeClass('active'); // .activeクラスが付いていたスライドから.activeを取り除く。
532
532
 
@@ -544,7 +544,7 @@
544
544
 
545
545
 
546
546
 
547
- $('.change-btn').click(function(dir) { // 前へ、次へのボタンをクリックした際の動き。
547
+ $('.change-btn').click(function() { // 前へ、次へのボタンをクリックした際の動き。
548
548
 
549
549
  var $displaySlide = $('.active');
550
550
 

3

「追記」内のslide.jsにあります引数部分を編集致しました。

2021/06/03 01:52

投稿

punchan36
punchan36

スコア105

test CHANGED
File without changes
test CHANGED
@@ -526,7 +526,7 @@
526
526
 
527
527
 
528
528
 
529
- $('.index-btn').click(function() { // ページ番号をクリックした際の動き。
529
+ $('.index-btn').click(function(dir) { // ページ番号をクリックした際の動き。
530
530
 
531
531
  $('.active').removeClass('active'); // .activeクラスが付いていたスライドから.activeを取り除く。
532
532
 
@@ -544,7 +544,7 @@
544
544
 
545
545
 
546
546
 
547
- $('.change-btn').click(function() { // 前へ、次へのボタンをクリックした際の動き。
547
+ $('.change-btn').click(function(dir) { // 前へ、次へのボタンをクリックした際の動き。
548
548
 
549
549
  var $displaySlide = $('.active');
550
550
 

2

「追記」から下を追加致しました。

2021/06/02 09:43

投稿

punchan36
punchan36

スコア105

test CHANGED
File without changes
test CHANGED
@@ -355,3 +355,223 @@
355
355
  Rails 5.2.3
356
356
 
357
357
  jquery 1.12.4
358
+
359
+
360
+
361
+ ### 追記
362
+
363
+
364
+
365
+ ご回答を元にしたコードを追記致します。
366
+
367
+ こちらのコードでも、質問前と同様に上手く動きませんでした。状況は以下の通りです。
368
+
369
+ 0. 「スライド1、2」に関わらず、最初にクリックしたスライドは全ての機能が上手く動く。
370
+
371
+ 0. スライドを一旦閉じもう片方のスライドをクリックすると、中身(あ, い, う, か, き, くの文字)が無い空白のページが表示される。
372
+
373
+ 0. 更には1ページ目から必ず表示される訳ではなく、先ほどのスライドを何ページ目で閉じたかに依存して途中のページから表示されたりする。
374
+
375
+ 0. 「← 前へ」や「次へ →」ボタンを押しても相変わらずページの中身が表示されないままページ遷移だけするが、一度「ページボタン」を押せばその番号に対応したページ内容が表示され、その後であれば「← 前へ」や「次へ →」ボタンも機能するようになる。
376
+
377
+
378
+
379
+ テストまでして頂き有難うございます。どこかコードに相違点がありますでしょうか。
380
+
381
+
382
+
383
+ **slide.html.erb**
384
+
385
+ ```rails
386
+
387
+ <ul>
388
+
389
+ <li><div data-target="slide01" class="click-modal">スライド1</div>
390
+
391
+ <div id="slide01" class="modal-wrapper">
392
+
393
+ <div class="modal">
394
+
395
+ <div class="close-modal">
396
+
397
+ <i class="fa fa-2x fa-times"></i>
398
+
399
+ </div>
400
+
401
+ <div class="slide-wrapper">
402
+
403
+ <div class="slide-title">スライド1</div>
404
+
405
+ <div class="change-btn-wrapper">
406
+
407
+ <div class="change-btn prev-btn">← 前へ</div>
408
+
409
+ <div class="change-btn next-btn">次へ →</div>
410
+
411
+ </div>
412
+
413
+ <ul class="slides">
414
+
415
+ <li class="slide firstSlide active">あ</li>
416
+
417
+ <li class="slide">い</li>
418
+
419
+ <li class="slide lastSlide">う</li>
420
+
421
+ </ul>
422
+
423
+ <div class="index-btn-wrapper">
424
+
425
+ <div class="index-btn">1</div>
426
+
427
+ <div class="index-btn">2</div>
428
+
429
+ <div class="index-btn">3</div>
430
+
431
+ </div>
432
+
433
+ </div>
434
+
435
+ </div>
436
+
437
+ </div>
438
+
439
+ </li>
440
+
441
+
442
+
443
+ <li><div data-target="slide02" class="click-modal">スライド2</div>
444
+
445
+ <div id="slide02" class="modal-wrapper">
446
+
447
+ <div class="modal">
448
+
449
+ <div class="close-modal">
450
+
451
+ <i class="fa fa-2x fa-times"></i>
452
+
453
+ </div>
454
+
455
+ <div class="slide-wrapper">
456
+
457
+ <div class="slide-title">スライド2</div>
458
+
459
+ <div class="change-btn-wrapper">
460
+
461
+ <div class="change-btn prev-btn">← 前へ</div>
462
+
463
+ <div class="change-btn next-btn">次へ →</div>
464
+
465
+ </div>
466
+
467
+ <ul class="slides">
468
+
469
+ <li class="slide firstSlide active">か</li>
470
+
471
+ <li class="slide">き</li>
472
+
473
+ <li class="slide lastSlide">く</li>
474
+
475
+ </ul>
476
+
477
+ <div class="index-btn-wrapper">
478
+
479
+ <div class="index-btn">1</div>
480
+
481
+ <div class="index-btn">2</div>
482
+
483
+ <div class="index-btn">3</div>
484
+
485
+ </div>
486
+
487
+ </div>
488
+
489
+ </div>
490
+
491
+ </div>
492
+
493
+ </li>
494
+
495
+ </ul>
496
+
497
+ ```
498
+
499
+
500
+
501
+ **slide.js**
502
+
503
+ ```js
504
+
505
+ $(document).on('turbolinks:load', function() {
506
+
507
+ $(function() {
508
+
509
+ function toggleChangeBtn(){
510
+
511
+ var currentSlide = $('.active');
512
+
513
+ $('.change-btn').show();
514
+
515
+ if (currentSlide.hasClass('firstSlide')) {
516
+
517
+ $('.prev-btn').hide(); // 表示されているスライドが最初のページの場合「前へ」は非表示。
518
+
519
+ } else if (currentSlide.hasClass('lastSlide')) {
520
+
521
+ $('.next-btn').hide(); // 表示されているスライドが最後のページの場合「次へ」は非表示。
522
+
523
+ }
524
+
525
+ }
526
+
527
+
528
+
529
+ $('.index-btn').click(function() { // ページ番号をクリックした際の動き。
530
+
531
+ $('.active').removeClass('active'); // .activeクラスが付いていたスライドから.activeを取り除く。
532
+
533
+ var clickedIndex = $('.index-btn').index($(this));
534
+
535
+ $('.slide').eq(clickedIndex).addClass('active'); // 今クリックされたページ番号と同じインデックス番号を持つスライドに.activeを付与する。
536
+
537
+
538
+
539
+ var dir = $(this).parents('.slide-wrapper');
540
+
541
+ toggleChangeBtn(dir);
542
+
543
+ });
544
+
545
+
546
+
547
+ $('.change-btn').click(function() { // 前へ、次へのボタンをクリックした際の動き。
548
+
549
+ var $displaySlide = $('.active');
550
+
551
+ $displaySlide.removeClass('active'); // .activeが付いていたスライドから.activeを取り除く。
552
+
553
+ if ($(this).hasClass('next-btn')) {
554
+
555
+ $displaySlide.next().addClass('active'); // 今クリックしたボタンに.next-btnクラスがついていたら、その次のスライドにactiveを付与する。
556
+
557
+ }
558
+
559
+ else {
560
+
561
+ $displaySlide.prev().addClass('active'); // 今クリックしたボタンに.prev-btnクラスがついていたら、その前のスライドにactiveを付与する。
562
+
563
+ }
564
+
565
+
566
+
567
+ var dir = $(this).parents('.slide-wrapper');
568
+
569
+ toggleChangeBtn(dir);
570
+
571
+ });
572
+
573
+ })
574
+
575
+ });
576
+
577
+ ```

1

タグにJavaScriptを追加致しました。

2021/06/02 08:28

投稿

punchan36
punchan36

スコア105

test CHANGED
File without changes
test CHANGED
File without changes