Site icon Tips Note by TAM

【jQuery】要素の数によってbxSliderの挙動を変更する

かなり初歩的な使い方な気がしますが、初めてこの書き方をしたので備忘録代わりにまとめました。

スライドさせる要素の数によって、bxSliderの動きを変える必要がありました。
今回したのはinfiniteLoopのオンオフですが、他のオプションを付加することも出来ます。

挙動的には

  1. 共通設定となる(infiniteLoopを設定していない状態)bxSliderを定義
  2. 要素の数によって挙動の出し分け
  3. bxSliderをリロードする

という順番になります。
実際のJSコードはこちらです。

// 共通の初期設定の配列
var defaultOpt = {
 speed: 900,
 minSlides: 3,
 maxSlides: 3,
 moveSlides: 1,
 slideWidth: 270,
 slideMargin: 15,
 pager: false,
 auto: true,
 pause: 4500,
 autoHover: true
};
var slider = $('#slider').bxSlider(defaultOpt); // 上記で設定した内容でbxSliderを定義
if( slider.getSlideCount() < 4 ) {
 // スライダー3つ以下のとき
 defaultOpt['infiniteLoop'] = false;
} else {
 // スライダー4つ以上のとき
 // prev/nextのリンクをクリックするとbxSliderのautoがfalseになってしまうので、再度autoをセットする
 $(document).on('click', 'a.bx-prev, a.bx-next', function(){
 slider.startAuto();
 });
};

// スライダーをリロードする
slider.reloadSlider();

こうして設定をリロードするときのほかにも、
例えば、クリック時とロード時に同じ設定のJSを動かしたいとき(例:colorbox)などは、
この書き方なら最初に共通設定を最初に置いておけば、使いまわしができますね。
ひとつ勉強になりました!