我目前正在制作自己的幻灯片,我一开始就在苦苦挣扎。目前我的对象中有两个函数:
init: function() {
var self = this;
if (this.element.find(".slide_item").size() == 1) {
this.options.on = false;
} else {
setInterval(function() { self.next(); }, 5000);
}
},
next: function() {
var items = this.element.find(".slide_item");
var current = this.element.find(".slide_item:visible");
var next = current.next();
current.slideUp("slow");
if (next.is(":last-child")) {
items.first().slideDown("slow");
} else {
next.slideDown("slow");
}
}
我的幻灯片容器中有三个项目( .slideshow ),但我的代码实际上只在第一个和第二个项目之间切换。第三个,最后一个项目总是通过。我不知道为什么,当我用 console.log()检查所有输出时,一切似乎都没问题。我的错误在哪里?
答案 0 :(得分:5)
你的问题在这里:
if (next.is(":last-child")) {
items.first().slideDown("slow");
这说的是,如果下一个项目是最后一个项目,则滑动第一个项目,有效地跳过最后一个项目。
您想要做的是,如果下一个项目不存在,请向下滑动第一个项目。
if (next.length == 0) {
items.first().slideDown("slow");
我更愿意只使用第一个更新next
var。
var next = current.next();
if (next.length == 0) {
next = items.first();
}
current.slideUp("slow");
next.slideDown("slow");