我有一个带有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()并访问所有全局对象变量?
答案 0 :(得分:0)
但是,我不想复制(this)因为我需要更新真实对象变量以用于其他功能。
您似乎担心,当您需要thisCopy
变量时,原始this
已发生变化,您仍然无法使用旧数据。
好吧,我有个好消息:thisCopy
是对象的浅表副本,而不是一个自变量。例如:
var foo = { a: 1 };
var bar = foo;
foo.a = 2;
alert( bar.a ); // alerts "2"
换句话说,使用var thisCopy = this;
技术是安全的。