我被要求尝试在到达最后一张幻灯片时停止此幻灯片放映
http://jsfiddle.net/mplungjan/Fakwx/
以下是我需要修改的代码 - 额外的奖励是从对象中获取幻灯片的数量
$(function(){
$('#slides').slides({
animationComplete: function(current) {
// how to stop on the last slide:
// a) get the number of slides from the object - called total in the js
// b) call the stop() or pause() on the slideshow object
if (current>=????.total) {
????.stop();
}
},
preload: true,
.
.
});
});
以下是网站http://slidesjs.com/ - 我没有找到任何可以使用的示例,但精通jQuery的人应该能够告诉我如何从http://slidesjs.com/js/slides.jquery.js调用此函数:
function stop() { // clear interval from stored id
clearInterval(elem.data('interval'));
}
请告诉我你是如何找到这个对象的,因为我从未尝试过枚举jQuery方法。
在Plain JS中我会做类似
的事情var txt = "";
for (var o in object) {
txt += '\n'+o+':'+object[o]
}
...
但在这种情况下,我不知道如何访问幻灯片对象并找出停止播放的内容。
答案 0 :(得分:1)
stop()
方法中引用的“elem”是行为绑定的元素;在这种情况下,$("#slides")
。显然,脚本使用jQuery的data()
方法存储重复间隔。下面是一些使用相同data()
方法检索该间隔的工作代码,并使用图像数量(减去两个按钮)来确定何时停止。
注意:每次计算图像数量效率低下。总计数应存储在变量中,但为了清楚起见,我将其留在if()
语句中。
$(function(){
$('#slides').slides({
animationComplete: function(current) {
// how to stop on the last slide
// a) get the number of slides from the object
// b) call the stop() or pause() on the slideshow object
if (current >= $("#slides img").length - 2) // Subtract Two arrows
clearInterval($('#slides').data('interval'));
},
preload: true,
preloadImage: 'http://slidesjs.com/img/loading.gif',
play: 5000,
pause: 2500,
slideSpeed: 600,
hoverPause: true
});
});
更新了JSFiddle:http://jsfiddle.net/Fakwx/2/