Slick Init - slickPause undefined

时间:2015-07-02 08:58:28

标签: javascript jquery javascript-events slick.js

当尝试在初始化侦听器中暂停滑块时," slick(' slickPause')"方法不能处理错误

Uncaught TypeError: Cannot read property 'slickPause' of undefined

一段代码示例是:

var opts = {
            autoplay: true,
            autoplaySpeed: 5000,
            speed: 750,
            fade: true,
            arrows: false,
            appendDots: $('.nav-wrap div'),
            dots: true,
};

$(elem).on('init', function(event, slick){
            var slider = slick.$slider;
            slider.slick('slickPause');
});

$(elem).slick(opts);

似乎应该有一个现成的事件,但是没有关于如何解决这个问题的想法?

需要这个的目的是检测第一张幻灯片是否是视频,如果是,请暂停滑块并播放视频,然后继续。

谢谢, 迪安

3 个答案:

答案 0 :(得分:2)

我有一个艰难的时间,这似乎是init的错误或者我可能没有完全理解它,但光滑的暂停似乎在其他情况下工作正常(例如“afterChange”)。

或许将此问题作为一个问题提交给Ken Wheeler

根据你所说的你想做的事情,也许你可以尝试一种不同于浮油的方式吗?

$(elem).each(function(){
    var $this = $(this);

    $this.slick(opts);

    var iframe = $this.find('.slick-slide:first-child').find('iframe');

    if(iframe.length > 0){
        $this.slick('slickPause');
    }  
});

Codepen

答案 1 :(得分:1)

在我看来,暂停功能正在起作用,但是,在用鼠标离开幻灯片区域的同时,自动播放再次被激活...

我通过增加autoplaySpeed来解决了这个问题-意味着自动播放功能仍会打开,但要等到下一张幻灯片才能真正播放很久……

$sliderslickSetOption("autoplay",false,false);
$sliderslickSetOption("autoplaySpeed",10000000,false);

答案 2 :(得分:0)

上面没有工作,所以这就是我发布解决方案的原因

var slick_options = {
        dots: false,
        infinite: true,
        speed: 800,
        autoplaySpeed:800,
        adaptiveHeight: true,
        autoplay:true
    };

    $('.slick-slider').slick(slick_options);


    $('.slick-slider-play-pause-btn').click(function() {
        var this_play_pause_ele = $(this);
        var is_has_play_class = this_play_pause_ele.hasClass('is-paused');
        var slick_options;
        $('.slick-slider').slick('unslick');


        if(is_has_play_class==true){
            this_play_pause_ele.removeClass('is-paused');
            this_play_pause_ele.html('Pause');

            slick_options = {
                dots: false,
                infinite: true,
                speed: 800,
                autoplaySpeed:800,
                adaptiveHeight: true,
                autoplay:true
            };
            $('.slick-slider').slick(slick_options);
        } else {
            this_play_pause_ele.addClass('is-paused');

            this_play_pause_ele.html('Play');
            slick_options = {
                dots: false,
                infinite: false,
                speed: 300000000000,
                autoplaySpeed:300000000000,
                adaptiveHeight: true,
                autoplay:false
            };
            $('.slick-slider').slick(slick_options);
        }
    });