jquery无法在动画结束时调用javascript对象函数

时间:2012-04-01 13:04:18

标签: jquery jquery-animate javascript-objects

我有一个带有jquery视觉效果的javascript对象。

我可以在主动画函数中访问它。无论,但是我无法访问它。来自函数末尾的任何(当动画完成时)

this.myDiv1 = 'myScrollableDiv';
this.myDiv2 = 'myDivToScrollTo';
this.test = 'It works';

$( "#"+this.myDiv1 ).animate({
    scrollTop: $( "#"+this.myDiv2 ).position().top - $( "#"+this.myDiv1 ).position().top
}, 500, function() {
    this.myOtherFunction();
});

this.myOtherFunction = function() {
    alert(this.test);
};

this.myOtherFunction未被调用,因为我认为(this)在this.myOtherFunction()行中;指的是当前的jquery animate函数,而不是全局对象。

所以我尝试将(this)的副本创建为标准的javascript var

var thisCopy = this;
在animate函数之前

,然后将thisCopy与所有现有变量一起使用。这有效......

但是,我不想复制(this)因为我需要更新真实对象变量以用于其他功能。

我也尝试将myOtherFunction声明为普通变量,然后在没有()的情况下调用myOtherFunction并调用该函数,但仍然不允许我访问对象变量。

如何在动画完成后调用this.myOtherFunction()并访问所有全局对象变量?

1 个答案:

答案 0 :(得分:0)

  

但是,我不想复制(this)因为我需要更新真实对象变量以用于其他功能。

您似乎担心,当您需要thisCopy变量时,原始this已发生变化,您仍然无法使用旧数据。

好吧,我有个好消息:thisCopy是对象的浅表副本,而不是一个自变量。例如:

var foo = { a: 1 };
var bar = foo;
foo.a = 2;
alert( bar.a );  // alerts "2"

换句话说,使用var thisCopy = this;技术是安全的。