当尝试在初始化侦听器中暂停滑块时," 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);
似乎应该有一个现成的事件,但是没有关于如何解决这个问题的想法?
需要这个的目的是检测第一张幻灯片是否是视频,如果是,请暂停滑块并播放视频,然后继续。
谢谢, 迪安
答案 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');
}
});
答案 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);
}
});