首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jquery不能在动画结束时调用javascript对象函数

jquery不能在动画结束时调用javascript对象函数
EN

Stack Overflow用户
提问于 2012-04-01 13:04:18
回答 1查看 385关注 0票数 0

我有一个带有一些jquery的javascript对象,以获得视觉效果。

我可以在主动画函数中访问this.whatever,但不能从函数的末尾访问this.whatever (当动画完成时)

代码语言: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.myOtherFunction()行中(这个)引用的是当前的jQuery动画函数,而不是全局对象。

因此,我尝试创建一个作为标准javascript var的(this)副本。

代码语言:javascript
复制
var thisCopy = this;

在动画函数之前,将thisCopy与所有现有的vars一起使用。这很管用..。

但是,我不想复制(这个),因为我需要更新实际的对象vars,以便与其他函数一起使用。

我还尝试将myOtherFunction声明为一个普通变量,然后不使用()调用myOtherFunction,它调用函数,但仍然不允许我访问对象vars。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-01 13:11:20

但是,

不想复制(这个),因为我需要更新实际的对象vars,以便与其他函数一起使用。

您似乎担心,当您需要thisCopy变量时,原始的this已经更改,并且您被旧数据困住了。

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

代码语言:javascript
复制
var foo = { a: 1 };
var bar = foo;
foo.a = 2;
alert( bar.a );  // alerts "2"

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9964598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档