1

私は現在自分のスライドショーに取り組んでおり、最初はすでに苦労しています。現在、オブジェクトには2つの関数があります。

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)に3つのアイテムがありますが、コードは実際には最初のアイテムと2番目のアイテムの間でのみ切り替わります。第三に、最後のアイテムは常に通過します。console.log()ですべての出力を確認すると、すべてが正常に見える理由がわかりません。私の間違いはどこにありますか?

4

1 に答える 1

5

あなたの問題はここにあります:

if (next.is(":last-child")) {
    items.first().slideDown("slow");

これは、次のアイテムが最後のアイテムである場合、最初のアイテムをスライドダウンして、最後のアイテムを効果的にスキップすることを意味します。

代わりに、次のアイテムが存在しない場合は、最初のアイテムを下にスライドします。

if (next.length == 0) {
    items.first().slideDown("slow");

next代わりに、最初の変数で変数を更新することを好みます。

var next = current.next();
if (next.length == 0) {
    next = items.first();
}

current.slideUp("slow");
next.slideDown("slow");
于 2013-02-28T19:54:16.147 に答える