1

クリックで 1 つずつアニメーション化したい一連の要素があります。最初のものはアニメーションしますが、次のものはアニメーションしません。ここで何が欠けていますか?

デモ

$(document).ready(function() {
    $('.button').click(function() {  
        $('.slide').next().animate({"top" : "5000"}, 500);
    })   
});
4

3 に答える 3

1

これを試すことができます -デモ

$(document).ready(function(){
    var i = $(".slide").length;

    $('.button').click(function() {  
        i--;
        $('.slide').eq(i).animate({"top" : "5000"}, 500);
    })
});
于 2013-03-28T22:44:29.207 に答える
0

あなたのセレクターはあなたが思っていることをしていません。

$('.slide').next().animate({"top" : "5000"}, 500);

$('.slide') これは、クラス スライドからすべての要素を選択しています。つまり、「スライド ブルー」、「スライド 赤」、「スライド イエロー」、「スライド ブラック」を選択しています。

$('.slide').next() これは、選択したすべてのスライドの次の兄弟 (存在する場合)、つまり「スライド青」、「スライド赤」、および「スライド黄」を取得します。

あなたのアニメーションは青、赤、黄色に作用しており、上には黒しか残っていません。

黒には兄弟が残っていないため、その後ボタンを押しても何も起こりません。

于 2013-03-28T22:40:18.097 に答える
0

これを行う:

すべての要素に up クラスを追加して (それらを up としてマークするためだけに)、次のコードを使用します。

$(document).ready(function(){



    $('.button').click(function(){  
        var slide = $('.slide.up').last();
        slide.toggleClass('up');
        slide.animate({"top" : "5000"}, 500);
    })

});

テスト済みで、jsFiddle で期待どおりに動作します

于 2013-03-28T22:43:08.983 に答える