2012-01-23 7 views
1

私はのセットを持っています。その中には、いくつかの<article>要素があります。 <article>をクリックすると、すべてが1つずつ見えなくなります。delay()に従っていないJqueryのアニメーション

HTMLは次のとおりです。

<li> 
    <article class="classname"> 
    <article class="classname"> 
</li> 
<li>..</li> 
<li>..</li> 
<li>..</li> 

私が書いていたjqueryの機能だった:

$(".classname").click(function(){ 

     $(this).parent().parent().find('li').each(function(index, item){ 
      $(item).children().animate({ "left" : "-1000px" }).delay(2000); 

     }) 
    }) 

問題は、私は任意の物品の要素をクリックすると、すべての要素が一度にビューの外にスライドさせています。私が望むように一つ一つではありません。何が問題なの?

答えて

3

遅延機能は、キュー内の後続の項目の実行を遅らせる:あなたは千鳥期間でアニメーションの呼び出しの前に遅延を必要とする:

$(item).children().delay(index * 2000).animate({ "left" : "-1000px" }); 
+0

遅延がします実際には "一時停止" のループ?私は一時停止するjqueryメソッドを知らなかった、これは非常に便利です。ありがとうございます –

+0

@ JohnnyCraig:何も一時停止しません。それは非同期に*実行を遅らせる*。 rich.okellyには 'index * 2000'が含まれています。これは、各遅延が前回よりも2000ms長くなることを意味します。 '0 * 2000'、' 1 * 2000'、 '2 * 2000'など –

0

delay()がキューに遅延を追加します。
の前にのアニメーションを挿入する必要があります。

0

あなたは(.animate前に)(あなたの.delayを呼び出す必要があります):

$(item).children().delay(2000).animate({ "left" : "-1000px" }); 
1

の項目には、各記事のdelay異なるを設定する必要があります一つ一つをアニメーション化する:

$(item).children().delay(index * 2000).animate({ "left" : "-1000px" }); 

更新

おそらく、このようなsomethignを探しています:

$(".classname").click(function(){ 
    $(".classname").each(function(index, item){ 
     $(this).delay(index * 100).animate({ "left" : "-1000px", opacity: "0" }, 500) 
    }) 
}) 

http://jsfiddle.net/L3YS3/1/

+0

これは非常に単純な解決策です。私はもっと複雑なものを書いていました。 –

+0

これは正しくありません。問題のコードと同じ誤りがあります。 –

0

ファーストコール.delay()、その後、アニメーション機能:

$(item).children().delay(2000).animate({ "left" : "-1000px" }); 

非常に簡単な例:この位置にhttp://jsfiddle.net/EzMzy/

関連する問題