0

.click()いくつかの関数を含む単純な関数があります。

$mario.on('click', this, function() {

    var width_mario  = $window.width()/2;
    $contentw.animate({left: '100%', marginLeft: -width_mario, marginTop: 0}, 600);
    $fixed.css({'background-color': '#510000', 'left': '25%'});
    createMario();
    trigger(); // fire trigger not until createMario() is finished with animation
});

の関数内にcreateMario()は jQuery.animate()イオンがロードされています。私がやろうとしているのは、アニメーションcreateMario()が終了するまでトリガーを発射しないことです。アニメーションがクリック関数内で終了した場合に実行できるリターン関数のようなもの。

ありがとう

編集:setTimeout()アニメーションの速度がランダムであるため、ありません。

4

3 に答える 3

2

文字通りそれはできません。trigger代わりに、関数 の参照を渡してcreateMario、アニメーションが終了したときにその関数を呼び出す必要があります。アニメーションが jQuery 経由であると仮定すると、終了時に呼び出すコールバックがあります。

于 2013-11-10T23:14:16.327 に答える
1

element.promise.done(function() { trigger(); });関数内の 1 つの要素をアニメーション化する場合にも使用できます。createMarioまたは、アニメーション化された最も長い要素 (終了までに最も時間がかかる要素) にアタッチすることもでき、trigger()その要素のアニメーション化が終了した後に関数が呼び出されます。

これは、これを例示する私がまとめたjsFiddleです: http://jsfiddle.net/WPHmY/2/

于 2013-11-11T01:01:27.767 に答える