1

質問のタイトルは紛らわしいです、私は知っています。それはまた私の検索を解決策を見つけるのを難しくします。

これらのコードがあると仮定すると、.animate()オプションが外部オブジェクトである場合、completeまたはその場合にパラメーターを渡すにはどうすればよいですか?step

var someObj = {
    onComplete: function(e) {
        console.log(e); // return undefined
    },

    onStep: function(e) {
        console.log(e); // return undefined too
    },
}

var optionObj = {
    duration: 300,
    easing: 'linear',
    complete: someObj.onComplete(e), // this is not working
    step: someObj.onStep(e) // this is not working
}

$('div').animate({width: "500px", height: "500px"}, optionObj);
4

2 に答える 2

3

これらのコールバックに独自のパラメーターを渡し、それらのコールバック内thisで正しく設定されていることを確認するにはsomeObj、おそらく追加のクロージャーが必要になります。

var optionObj = {
    duration: 300,
    easing: 'linear',
    complete: function() {
        someObj.onComplete(e);  // assumes 'e' is defined somewhere
    },
    step: function(now, fx) {   // jQuery automatically supplies these parameters
        someObj.onStep(e);      // so you need to pass your own instead
    }
}
于 2012-09-20T21:37:48.977 に答える
2

以下のようにオブジェクトを定義してみてください。(e)をから削除すると、関数が呼び出さcomplete: someObj.onComplete(e)、戻り値がに割り当てられますoptionObj.completeoptionObj.stepこれはundefinedです。

var optionObj = {
    duration: 300,
    easing: 'linear',
    complete: someObj.onComplete, 
    step: someObj.onStep 
}

デモ:http: //jsfiddle.net/mL5Fy/

于 2012-09-20T21:29:55.703 に答える