2016-11-03 66 views
1

我有一堆使用bxslider在旋转木马中显示的帖子。激发旋转木马的代码如下所示:BxSlider destroySlider()函数不工作:slider undefined或不是函数

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(); 
     } 
    }); 

}); 

简单,对吧?

问题是,destroySlider()不起作用:我得到的“旋转木马”是未定义的。这是相同的,如果我尝试:

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

我想申报“旋转木马” jQuery的外部(文件...)把旋转木马变种;在脚本的顶部,但我总是在控制台中得到相同的结果:Carousel未定义。

我该如何解决这个问题?

+0

轮播正在页面上正确创建/初始化? – vijayP

+0

是的,它在首次加载页面时正确创建,并且如果我调整窗口大小超过640px。但是,如果我将它缩小到640像素以下,我会得到“传送带未定义”,无法使destroySlider()正常工作。 – frafor

回答

2

请您用下面的代码试试:

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; 
      } 
     } 
    }); 

}); 

请摧毁它之前检查carousel对象。同样适用于初始化carousel。如果它已经存在,则不需要创建/重新初始化轮播。

+0

非常感谢@viajayP它就像一个魅力! – frafor

+0

欢迎@frafor ...':)'!如果(jQuery(window).width()>),则使用.reloadSlider()方法更改window.resize部分:'jQuery(window).resize(function(){ – vijayP

+0

if carouselWidth){ \t \t \t \t如果(ttCarousel){ \t \t \t \t \t ttCarousel.reloadSlider(); \t \t \t \t} \t \t \t}否则{ \t \t \t \t如果(ttCarousel){ \t \t \t \t \t ttCarousel.destroySlider(); \t \t \t \t} \t \t \t} \t \t});' 否则滑块不会重新申请相对于媒体查询CSS规则,如果存在的话,那么它可能会导致错误的appearence – frafor

相关问题