1

我知道,问题标题令人困惑。这也让我很难找到解决方案。

假设我有这些代码,我怎样才能将参数传递给.animate() 选项completestep当 .animate() 选项是外部对象时?

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

尝试如下定义您的对象。complete: someObj.onComplete从使用中删除 (e)(e)将调用函数并将返回值分配给optionObj.completeand optionObj.stepwhich is undefined

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

演示:http: //jsfiddle.net/mL5Fy/

于 2012-09-20T21:29:55.703 回答