6

特定の要素のアニメーションが終了した後に関数を実行するにはどうすればよいですか? スライドダウンのようなアニメーションで、要素が非表示になり、何かをクリックすると、コンテンツが下にスライドして表示されます (+高さ)。

その要素のアニメーション関数を制御できないため、$.animate 関数のコールバック オプションを使用できません...

今、私は次のようなものを持っています

$('.trigger').click(function(){  // <-- "trigger" will make the element animate 
  setTimeout(myfunction, 500);
});

これは機能しますが、私はそれが好きではありません。ハッキーに感じます

4

2 に答える 2

3

jQuery 1.5以降を使用している場合は、jQuerypromise()メソッドを使用できます:http://jsfiddle.net/rGBk7/

例えば

/* do animation */
$("div").animate({ 'marginLeft' : '300px' }, 1000);

/* attach a promise to animated element/s */    
$("div").promise().done(function() {
    alert("animation end");
});

http://api.jquery.com/promise/を参照してください

于 2012-04-04T11:20:05.997 に答える
1

つまり:


$("div").queue(function(){
    your_function();
});

アニメーション キューが完了した後に実行されます。

于 2012-04-04T11:23:02.620 に答える