2015-01-06 141 views
2

我想解决为什么unslick方法在我成功调用ajax后调用它时不工作。我已阅读this后,我期待为slick-initialized类,但我仍然得到错误unslick方法不起作用

TypeError: .$slides is null if (.$slides.parent().hasClass('slick-track'))

HTML

<div id="skills" class="skills_section"> 
    <div>Slide 1</div> 
    <div>Slide 2</div> 
    <div>Slide 3</div> 
</div> 

当我初始化圆滑页面上加载的标记看起来像这样:

<div id="skills" class="skills_section slick-initialized slick-slider"> 
    <div class="slick-list draggable"> 
    <div class="slick-track"> 
     <div class="slick-slide slick-cloned">Slide 1</div> 
     <div class="slick-slide slick-cloned">Slide 2</div> 
     <div class="slick-slide slick-cloned">Slide 3</div> 
    </div> 
    </div> 
</div> 

我有一个Ajax调用,将只需更换每个slick-slide

数据个
$.ajax({ 
    type: 'get', 
    url: '/public/index', 
    dataType: 'script', 
    data: data_send, 
    success: function(data) { 
    unSlickCarousel(); 
    slickCarousel(); 
    } 
}); 

功能

function slickCarousel() { 
    $('.skills_section').slick({ 
    infinite: true, 
    slidesToShow: 3, 
    slidesToScroll: 1 
    }); 
} 

function unSlickCarousel() { 
    if($('#skills').hasClass('slick-initialized')){ 
    $('.skills_section').unslick(); 
    } 
} 

但正如我刚才所说,我得到的错误和HTML标记看起来像这样

<div id="skills" class="skills_section slick-initialized slick-slider"> 
    <div>Slide 1</div> 
    <div>Slide 2</div> 
    <div>Slide 3</div> 
</div> 
+0

1)我不明白“我读过这篇文章”是指什么。 2)无论如何,我无法将您描述的问题与您发布的代码复制(http://jsfiddle.net/Palpatim/ezcot8o3/)。你能用MCVE更新吗?浮动库和页面中的其他内容之间可能存在某种相互作用,但我们无法看到您迄今为止所展示的内容。您还提到“替换每张幻灯片中的数据”,但您发布的代码并不这样做。也许这个功能对你的结构做了些什么? – Palpatim

+0

感谢您抽出宝贵时间来研究并制作出js小提琴。以及数据肯定会改变(目前不能显示你)。我仔细看看你已经做了什么,看看是否有任何明显的礼物本身 – Richlewis

回答

0

我以前从未见过此错误消息。

我打算假设您的stackoverflow示例中的“浮动克隆”的3个实例只是复制/粘贴错误。 如果你真的“光滑克隆”出现所有这些时间,那就是你的错误。 unslick()方法需要删除所有“光滑克隆”幻灯片作为过程的一部分。 如果它删除了所有幻灯片,那么这就是幻灯片为空的原因。实际js文件

读线627看出,它这样做: https://github.com/kenwheeler/slick/blob/master/slick/slick.js

8

我相信你叫滑头方法的方式发生了变化。取而代之的$('.skills_section').unslick();

尝试$('.skills_section').slick("unslick");

你打电话也直接的响应选项里面的光滑选项

+0

拯救我的**** –

0

使用setTimeout调用这个用于初始化光滑()

function slickCarousel() { 
    setTimeout(function(){ 
    $('.skills_section').slick({ 
    infinite: true, 
    slidesToShow: 3, 
    slidesToScroll: 1 
    }); 
    }, 100); 
}