【发布时间】:2010-07-20 03:09:40
【问题描述】:
我有一个使用很棒的循环插件运行的幻灯片,当您单击节目中的一个按钮时,我会在页面上显示一个隐藏层并发送一个“暂停”命令来循环。我有两个问题:
收到暂停命令后,循环立即翻转回序列中的第一张幻灯片(为什么??),并且不会触发我之前/之后的回调。
关闭图层后,我发送“恢复”命令循环。幻灯片继续播放(从第一张幻灯片开始,暂停的地方),但现在循环根本不会调用我的之前/之后回调,即使幻灯片正在进行。
所以我想我的问题是:我怎样才能正确暂停/恢复幻灯片,以免发生这些奇怪的行为? (为了完全清楚并避免任何混淆,这与“悬停暂停”功能无关,这实际上对我来说很好用。:-)
这是我的循环()初始化和我的回调函数。 (你问我为什么要手动跟踪下一张幻灯片?因为当前幻灯片的内置值在之前/之后的回调中没有正确更新。)
$(document).ready(function() {
$('#slideshow').cycle({
fx: 'fade', // choose your transition type, ex: fade, scrollUp, shuffle, etc...
timeout: 4000, // milliseconds between slide transitions (0 to disable auto advance)
speed: 1000, // speed of the transition (any valid fx speed value)
pause: 1, // true to enable "pause on hover"
delay: 0, // additional delay (in ms) for first transition (hint: can be negative)
slideExpr: 'img', // expression for selecting slides (if something other than all children is required)
before: moveArrow, // function to call when moving to next slide
after: upd, // function to call when moving to next slide
fastOnEvent: 'fast',
});
});
var nextSlide = 0;
function upd(a, b, c) {
nextSlide = nextSlide + 1; // track which slide we're on
c = $('#slideshow img').length;
if(nextSlide > (c - 1)) nextSlide = 0; // wrap back to 1st
}
// move indicator showing which slide we're on
function moveArrow(a, b, c) {
$('#slide-indicator').attr('class', 'c'+nextSlide);
$(".clickmap").hide(); // hide other clickmaps
$(".clickmap.c"+nextSlide).show(); // show map for this slide
return true;
}
感谢您对此的任何想法--
最好, 埃里克
【问题讨论】:
-
我也遇到了这个问题。希望有人能解答。
-
我想出了一个 hacky 解决方法,它也可能对您有用 - 但需要帮助才能使解决方法正确运行。 Argh :-) 你可以在这里看到我的问题:stackoverflow.com/questions/3295185/…
-
我越来越近了——我认为部分问题是 Mac Firefox 的某种问题。我在这里用非常简单的代码设置了一个文本页面:themepark.com/eric
标签: jquery jquery-plugins jquery-cycle