我正在使用 Wordpress,在我的主题顶部,这些脚本按此顺序排列。jquery.js
- cycle2.js
- header_scripts.js
-lightbox.js
我想要做的是链接灯箱和cycle2插件,所以当你按下灯箱上的next / prev时,幻灯片将在cycle2上改变。这段代码就是这样做的。
$('body').on('lightboxNext', function() {
var slideshow = '.cycle-'+$('body').data('lightbox-slideshow');
var index = $(slideshow).data("cycle.opts").currSlide;
if (index > $(slideshow).data("cycle.opts").slideCount) {
return;
}
$(slideshow).cycle("goto", index + 1);
});
$('body').on('lightboxPrev', function() {
var slideshow = '.cycle-'+$('body').data('lightbox-slideshow');
var index = $(slideshow).data("cycle.opts").currSlide;
$(slideshow).cycle("goto", index - 1);
});
笔记。lightboxNext / Prev 在灯箱脚本中添加如下。
this.$lightbox.find('.lb-prev').on('click', function() {
$('body').trigger('lightboxPrev');
// ...
});
如果将此代码放在 Wordpress 循环中,它将起作用并被执行。但是,代码不能留在那里,因为如果有多个帖子,则侦听器会被触发多次而不是一次。
我尝试将我的代码移动到 header_scripts.js 中。代码不执行。以下代码已添加到 header_scripts.js
$(document).ready(function() {
console.log('document ready');
$('body').on('click', function() {
console.log('body clicked');
})
$('body').on('lightboxNext', function() {
var slideshow = '.cycle-'+$('body').data('lightbox-slideshow');
var index = $(slideshow).data("cycle.opts").currSlide;
if (index > $(slideshow).data("cycle.opts").slideCount) {
return;
}
$(slideshow).cycle("goto", index + 1);
});
$('body').on('lightboxPrev', function() {
var slideshow = '.cycle-'+$('body').data('lightbox-slideshow');
var index = $(slideshow).data("cycle.opts").currSlide;
$(slideshow).cycle("goto", index - 1);
});
});
加载页面并单击正文,我在控制台中得到以下信息:
准备好文件
身体被点击
然而 lightboxNext/Prev 监听器不会触发。为什么?
我还尝试将此代码添加到页面底部。也不行。由于某种原因,该代码仅在 Wordpress 循环中有效。非常感激任何的帮助。