PhotoSwipe:有没有办法将事件处理程序附加到 'init' 事件或插件打开灯箱时?
PhotoSwipe: Is there a way to attach an event handler to the 'init' event or when the plugin opens the lightbox?
我正在为一个项目使用 PhotoSwipe lightbox in conjuntion with Slick 轮播,我希望在 photoswipe 灯箱未打开时轮播自动播放,但当灯箱打开时,我希望自动播放停止。
在 PhotoSwipe API 中,他们有一个 close
和 destroy
事件要监听,但没有 init
或 open
的事件。有没有人找到这样做的好方法?
类似于:
$('#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();
所以要做到这一点,我发现你可以在初始化之前做你需要做的,然后在 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();
我正在为一个项目使用 PhotoSwipe lightbox in conjuntion with Slick 轮播,我希望在 photoswipe 灯箱未打开时轮播自动播放,但当灯箱打开时,我希望自动播放停止。
在 PhotoSwipe API 中,他们有一个 close
和 destroy
事件要监听,但没有 init
或 open
的事件。有没有人找到这样做的好方法?
类似于:
$('#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();
所以要做到这一点,我发现你可以在初始化之前做你需要做的,然后在 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();