2012-01-09 6 views
0

次のコードをクリック機能から実行しています。何らかの理由で、100pxまでアニメーション化されている部分は、console.logまたはmy_function()を実行することはありません。 200pxまでアニメートする部分はすべて正常に動作します。何がありますか?アニメーション後にjQuery関数がスキップされる

if($(this).hasClass('open')) 
{ 
    $(this).removeClass('open').addClass('closed'); 
    $(this).animate({'width': '100px'}, {queue:false, duration:150, easing: 'linear'}).delay(160, function(){ 
    //Nothing in here ever get run?? 
    console.log('closed'); 
    my_function(); 
    }); 
} 
else 
{ 
    $(this).removeClass('closed').addClass('open'); 
    $(this).animate({'width': '200px'}, {queue:false, duration:200, easing: 'linear'}).delay(210, function(){ 
    console.log('opened'); 
    my_function(); 
    }); 
} 

答えて

5

$.fn.delayにはコールバックパラメータがありません。

http://api.jquery.com/delay/

+0

私はこれも考えていましたが、彼はelse文が動作すると言いました。しかし、私はそれが今まで働く理由を整理することはできません。何かご意見は? – mrtsherman

+0

私はそれが可能ではないと思います。 jsFiddle coming soon –

+1

ここはフィドルです。それは1つのconsole.logを発火させますhttp://jsfiddle.net/Tentonaxe/tRUBr/ –

1

あなたが代わりに.delayを使用しようと、.animateにコールバックを使用する必要があります。それを試してみてください:

$(this).animate({'width': '100px'}, 150, function(){ 
    console.log('closed'); 
    my_function(); 
}); 
+0

これで喜んでいません –

+0

申し訳ありませんが、前の例で構文エラーがありました。簡単な解決策で答えを編集しました。 – bfavaretto

+0

終了時にまだコンソールに何もロギングしていません:/ –

関連する問題