2013-06-03 6 views
5

Ich versuche, eine Klasse "deaktiviert" zum Pager hinzufügen, wenn der Schieberegler nur 1 Folie zeigt, und nichts zu gleiten.Hide Pager, wenn bxslider nur 1 Folie hat

Ich gleite ein div, keine Liste.

Es ist nur ein Grund div:

<div class="bxslider2"> 
    <div class="wrap"> 
     ... 
    </div> 
</div> 

ist die jquery für den Schieber:

$('.bxslider2').bxSlider({ 
    mode: 'horizontal', 
    speed: '180', 
    pagerType:'full', 
    pager:'true', 
    captions: false 
}); 

Ich mag nicht den Pager zeigen, wenn es nur 1 Folie zeigt ist.

Danke für jede Hilfe!

Justin

Antwort

16

konfrontiert ich das gleiche Problem und hier ist meine Lösung: Wir sollten zählen, wie viele Kinder Elemente, die wir unter .bxslider2 Block

$(".bxslider2>.wrap").length 

und wenn es nur eine ist, dann setzen Option zu 'falsch', sonst zu 'wahr'.

$('.bxslider2').bxSlider({ 
    mode: 'horizontal', 
    speed: '180', 
    pagerType:'full', 
    pager: ($(".bxslider2>.wrap").length > 1) ? true: false, 
    captions: false 
}); 

Ich hoffe, es hilft.

+0

nicht die beste Lösung (und Standard wäre es ".bxslider> li '), aber es macht den Trick, danke – Ruben

+0

Ich habe dies verwendet, um automatisches Scrollen zu deaktivieren, wenn es nur 1 Folie – Ruben

+0

dies wird nicht funktionieren, wenn Sie haben Mehrere Slider-Elemente auf derselben Seite und alle werden mit demselben Selektor erstellt. gegeben drei bxslider $ ('. bxslider'). bxSlider() ;. Die ersten beiden haben 5 Elemente, das dritte nur 3. dann $ (". Bxslider> .item"). Length gibt die Gesamtzahl von 13 Elementen zurück. –

0

ein schöner Weg, um diese Sache zu lösen, ist das Objekt, wie die und ändern Sie die Kontrollen pro Anzahl der Elemente neu zu laden:

var slideQty = $('.bxslider').bxSlider({ 
     minSlides: 1, 
     maxSlides: 3, 
     slideWidth: 110, 
     slideMargin: 0, 
     adaptiveHeight: true, 
     pager: false, 
     moveSlides: 1, 
     onSlideAfter: function ($slideElement, oldIndex, newIndex) { NextSlide(oldIndex, newIndex); } 

    }); 



    var count = slideQty.getSlideCount(); 
    if (count < 7) { 
     slideQty.reloadSlider({ 
      controls : false, 
      minSlides: 1, 
      maxSlides: 3, 
      slideWidth: 110, 
      slideMargin: 0, 
      adaptiveHeight: true, 
      pager: false, 
      moveSlides: 1, 
      onSlideAfter: function ($slideElement, oldIndex, newIndex) { NextSlide(oldIndex, newIndex); } 
     }); 
    } 

    return false; 
0

dieses Probieren Sie es für mich funktioniert !!

var slider = $('#slider').bxSlider(); 

$('.bx-next, .bx-prev, .bx-pager a').click(function(){ 
    // time to wait (in ms) 
    var wait = 1000; 
    setTimeout(function(){ 
    slider.startAuto(); 
    }, wait); 
}); 
3

Ich benutze CSS, um dies zu erreichen.

.bx-pager-item:first-of-type:last-of-type { 
    display: none 
} 
1

Hier ist eine Lösung, wenn Sie mehr als einen Bxslider auf der Seite haben.

Geht durch jeden Schieberegler und findet, ob es nur einen li hat. Wenn ja, fügen Sie pager: false zu dem Objekt hinzu, das an bxSlider übergeben wird.

Verwandte Themen