質問するログイン新規登録

回答編集履歴

3

コードの修正

2016/02/04 08:06

投稿

yamato_hikawa
yamato_hikawa

スコア2092

answer CHANGED
@@ -24,30 +24,24 @@
24
24
  </div>
25
25
  ```
26
26
 
27
- ```
27
+ ```JavaScript
28
28
  var $slider = $('.slider'),
29
29
  contentLength = $slider.children().length - 1; // .slider直下の要素の数を取得。0から始まるインデックス番号と合致させる為に1引く。この数は最後のスライド番号と同じになります。
30
30
 
31
- $slider.slick({
31
+ $slider.slick({
32
32
  slidesToShow: 1,
33
33
  autoplay: true,
34
34
  pauseOnHover: false,
35
35
  autoplaySpeed: 2000,
36
36
  arrows: false,
37
37
  fade: true
38
+ }).on('afterChange', function() {
39
+ // 現在のスライド番号(最初は0)を取得。
40
+ var currentSlide = $slider.slick('slickCurrentSlide');
41
+
42
+ // 最後のスライド番号と一致したら止める。
43
+ if(currentSlide === contentLength){
44
+ $slider.slick('slickPause');
45
+ }
38
46
  });
39
-
40
- var $sliderInner = $slider.find('.slick-slide');
41
-
42
- // .slick-slideのtransitionendのタイミングで毎回実行するようにイベントを設定。
43
- $sliderInner.on('transitionend', function(){
44
-  // 現在のスライド番号(最初は0)を取得。
45
- var currentSlide = $slider.slick('slickCurrentSlide');
46
-
47
-  // 現在の番号と、最後の番号を比較して、最後の番号だったらオートプレイを止める。
48
-  if(currentSlide === contentLength){
49
- $slider.slick('slickPause');
50
- }
51
- });
52
-
53
47
  ```

2

実際のコードサンプルを追加

2016/02/04 08:06

投稿

yamato_hikawa
yamato_hikawa

スコア2092

answer CHANGED
@@ -8,10 +8,46 @@
8
8
  最後のスライドまで行くと止まる、という機能は含まれていません。
9
9
  なので、最後のスライドまで行ったタイミングで、下記のメソッドを使う形になると思います。
10
10
 
11
+ ```JavaScript
12
+ $('.slider').slick('slickPause');
13
+
14
+ ```
15
+
11
16
  「slickPause」は、オートプレイを止めるメソッドです。
12
17
  任意のタイミング(今回の場合は最後のスライドが表示されたタイミング)で使うようにJSを書けば良いと思います。
13
18
 
14
- ```JavaScript
19
+ ```HTML
20
+ <div class="slider">
15
- $('.slider').slick('slickPause');
21
+ <div>sample1</div>
22
+ <div>sample2</div>
23
+ <div>sample3</div>
24
+ </div>
25
+ ```
16
26
 
27
+ ```
28
+ var $slider = $('.slider'),
29
+ contentLength = $slider.children().length - 1; // .slider直下の要素の数を取得。0から始まるインデックス番号と合致させる為に1引く。この数は最後のスライド番号と同じになります。
30
+
31
+ $slider.slick({
32
+ slidesToShow: 1,
33
+ autoplay: true,
34
+ pauseOnHover: false,
35
+ autoplaySpeed: 2000,
36
+ arrows: false,
37
+ fade: true
38
+ });
39
+
40
+ var $sliderInner = $slider.find('.slick-slide');
41
+
42
+ // .slick-slideのtransitionendのタイミングで毎回実行するようにイベントを設定。
43
+ $sliderInner.on('transitionend', function(){
44
+  // 現在のスライド番号(最初は0)を取得。
45
+ var currentSlide = $slider.slick('slickCurrentSlide');
46
+
47
+  // 現在の番号と、最後の番号を比較して、最後の番号だったらオートプレイを止める。
48
+  if(currentSlide === contentLength){
49
+ $slider.slick('slickPause');
50
+ }
51
+ });
52
+
17
53
  ```

1

加筆

2016/02/04 07:58

投稿

yamato_hikawa
yamato_hikawa

スコア2092

answer CHANGED
@@ -8,6 +8,9 @@
8
8
  最後のスライドまで行くと止まる、という機能は含まれていません。
9
9
  なので、最後のスライドまで行ったタイミングで、下記のメソッドを使う形になると思います。
10
10
 
11
+ 「slickPause」は、オートプレイを止めるメソッドです。
12
+ 任意のタイミング(今回の場合は最後のスライドが表示されたタイミング)で使うようにJSを書けば良いと思います。
13
+
11
14
  ```JavaScript
12
15
  $('.slider').slick('slickPause');
13
16