frafor
frafor

Reputation: 139

BxSlider destroySlider() function not working: slider undefined or is not a function

I have a bunch of posts displayed in a carousel using bxslider. The code that fires the carousel looks like:

jQuery(document).ready(function() {

var carouselWidth = 640;
var carousel;
var carousel_Config = {
          minSlides: 1,
          maxSlides: 5,
          slideWidth: 285,
          slideMargin: 25,
          controls: false,
          pagerSelector: '.pager'
}

    if( jQuery(window).width() > carouselWidth) {
        carousel = jQuery('.event-carousel').bxSlider(carousel_Config);
    };

    jQuery(window).resize(function() {
        if( jQuery(window).width() > carouselWidth) {
            carousel = jQuery('.event-carousel').bxSlider(ttCarousel_Config);
        } else {
            carousel.destroySlider();
        }
    });

});

Easy, right?

Problem is that destroySlider() does not work: I get that "carousel" is undefined. It's the same if I try with:

jQuery('.event-carousel').bxSlider().destroySlider();

I tried to declare "carousel" outside the jQuery(document...) putting var carousel; at top of the script but I always get the same result in console: Carousel is undefined.

How can I solve this problem?

Upvotes: 1

Views: 6060

Answers (1)

vijayP
vijayP

Reputation: 11512

Could you please try with below code:

jQuery(document).ready(function() {

var carouselWidth = 640;
var carousel = null;
var carousel_Config = {
          minSlides: 1,
          maxSlides: 5,
          slideWidth: 285,
          slideMargin: 25,
          controls: false,
          pagerSelector: '.pager'
}

    if( jQuery(window).width() > carouselWidth) {
        if(carousel == null)
            carousel = jQuery('.event-carousel').bxSlider(carousel_Config);
    };

    jQuery(window).resize(function() {
        if( jQuery(window).width() > carouselWidth) {
            if(carousel == null)
                carousel = jQuery('.event-carousel').bxSlider(ttCarousel_Config);
            else
                carousel.reloadSlider(); //reloading the slider if already instance present
        } else {
            if(carousel){
                carousel.destroySlider();
                carousel = null;
            }
        }
    });

});

Please check carousel object before destroying it. Same applies for initializing the carousel. If its already there then no need to create/re-init the carousel.

Upvotes: 2

Related Questions