2012-03-13 5 views
0

いくつかの要素を1つずつ開閉するアニメーションを作成しようとしていますが、何らかの理由でそれに成功しませんでした。異なるオブジェクトのjqueryチェーンイベント

ここにはJsFiddle http://jsfiddle.net/NCYvC/があります。

問題は、すべてのアニメーションが同時に実行されることです。

私はどこかでばかげた間違いをしていないことを願っています。

答えて

2

あなたのコードは動作しませんresonは

  • 、コールバックで直接関数を実行すると、あなただけのボックスにM1のクラス名を使用して

    1. あなたが原因です。

    Explonation:
    1.使用
    「functionNameを()」コールバックの引数として、あなたが実行されるコールバックを待ちませんが、あなたは、引数としてそれを入力すると、あなたがそれを実行します。関数を名前(例: "functionName")だけで参照する必要があります。

    例:あなたのdivボックス2.All

    $(".m1").slideDown("fast", functionName); 
    

    は、クラスM1を持っていました。つまり、最初の関数 "runIt"はすべてのdivに影響を与え、同時にそのすべてが実行されたように見えます。一例として

    更新フィドルコード:http://jsfiddle.net/mikaelbr/NCYvC/13/私はM5するM1を使用

  • +0

    が...私はちょうどjsfiddle府で、それは間違って作られたが、まだ同じことが – Mike

    +0

    起こった。しかし、右、コールバックを変更する場合には、働いていましたか? – mikaelb

    +0

    問題は、最後に '()'が追加されたためです。ありがとう – Mike

    2

    試してみてください。

    (function anim(idx) { 
        $m = $('.m'); 
        $m.eq(idx).slideDown("fast").delay(2000).slideUp("fast", function() { 
         if(idx + 1 < $m.length) { 
          anim(idx + 1); 
         } 
        }); 
    }(0)); 
    

    http://jsfiddle.net/NCYvC/19/

    あなたはまた、どのようにjQueryのqueues作品を読みたいと思うかもしれません。

    関連する問題