Jquery接下来没有正确迭代

时间:2013-02-28 19:50:43

标签: javascript jquery

我目前正在制作自己的幻灯片,我一开始就在苦苦挣扎。目前我的对象中有两个函数:

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()检查所有输出时,一切似乎都没问题。我的错误在哪里?

1 个答案:

答案 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");