PhotoSwipe:有没有办法将事件处理程序附加到'init'事件或插件打开灯箱?

时间:2015-01-08 13:30:33

标签: javascript jquery photoswipe

我正在使用PhotoSwipe灯箱与Slick旋转木马一起进行项目,我希望在照片组灯箱未打开的情况下让旋转木马自动播放,但是当灯箱打开时,我希望自动播放停止。

PhotoSwipe API中,他们有closedestroy个事件要收听,但不是initopen的事件。有没有人找到一个很好的方法来做到这一点?

类似的东西:

$('#gallery').slick({
  autoplay: true,
  dots: true,
});

// ... Setup photoswipe...

pswp.listen('open', function() {
  $('#gallery').slickSetOption('autoplay', false, false);
});

pswp.listen('close', function() {
  $('#gallery').slickSetOption('autoplay', true, false);
});

pwsp.init();

1 个答案:

答案 0 :(得分:0)

为此,我发现你可以在init之前完成你需要做的事情,然后在close上附加一个事件处理程序。

此外,Slick还存在一个问题,即自版本1.3.15起,使用slickSetOption命令无法关闭自动播放。

https://github.com/kenwheeler/slick/issues/731

以下是基于该问题的评论之一的解决方法:

// ... Setup PhotoSwipe ...
slider.slickPause();
slider.find('.slick-list').off('mouseleave.slick');

gallery.listen('close', function() { 
  slider.slickPlay();
  slider.find('.slick-list').on('mouseleave.slick', function() {
    slider.slickPlay();
  });
});

gallery.init();