JQuery动画完整功能:如何恢复我的"老这个”;
JQuery Animation Complete Function: How to recover my "old this"?
我刚开始使用jQuery,遇到了以下问题:
function AClass(){
this.attribute = /*something*/
}
AClass.prototype.COMPLETE= function() {
/*FROM HERE I WANT TO ACCESS TO THE ABOVE "this.attribute"!!*/
}
AClass.prototype.doSomething = function() {
$("something").animate(..,..,.., this.COMPLETE);
}
所以,这就是我面临的问题。通过完整动画函数,我想访问AClass的属性值。问题是,在该上下文中,this
指向正在设置动画的DOM元素,而不再指向调用方对象。
您可以使用$.proxy()
方法将特定上下文绑定到回调。或者,如果你不关心旧的浏览器(即IE<9),你可以使用(JS 1.8.5).bind()
方法。基本上,在需要提供yourFunction
作为回调的地方放置:
$.proxy(yourFunction, theRequiredContext)
// or
yourFunction.bind(theRequiredContext)
在示例代码的上下文中:
function AClass(){
this.attribute = /*something*/
}
AClass.prototype.COMPLETE= function() {
/*FROM HERE I WANT TO ACCESS TO THE ABOVE "this.attribute"!!*/
}
AClass.prototype.doSomething = function() {
$("something").animate(..,..,..,$.proxy(this.COMPLETE, this));
}
演示:http://jsfiddle.net/P9mbG/
将对原始this的引用保存在变量中:
function AClass(){
this.attribute = /*something*/
var self = this;
AClass.prototype.COMPLETE= function() {
/* Use: self.attributes */
}
AClass.prototype.doSomething = function() {
$("something").animate(..,..,..,COMPLETE);
}
}
相关文章:
- "TypeError:t.start未定义”;,在fullcalendar.min.js中,同时在我的网站上使
- 在我的代码中,实体类"卡片展示”;不起作用
- linkedin js"获取我的关系”;问题
- JQuery动画完整功能:如何恢复我的"老这个”;
- 需要帮助修复我的javascript"对于循环“;播放音频播放列表
- 为什么我的JS"如果“;语句的求值结果总是为false
- 我怎么能"DRY”;调出我的html和javascript代码
- 为什么获胜't This Vuejs“;Hello World"示例在我的电脑上渲染
- 得到"否'访问控制允许来源'标头存在于请求的资源上"对于我的JS AJAX而不是“;
- 为什么不't this replace()替换"我的“;
- JavaScript:为什么我最终会使用“;引号"在我的HTML中
- 为什么我的动画"重放的“;当通过innerHTML添加元素时
- "chrome.permissions不可用”;为我的扩展请求可选权限时
- 为什么我的javascript Promise被困为"“待定”;
- 我的javascript"幻灯片放映”;不起作用
- 我的onsubmit=“;return onNewUserRegistrationCheck(this)"仍然
- "class是一个保留的标识符“;我的javascript出了什么问题
- 我有一个onload=“;setDate()"在<身体>html文档的标记.为什么它没有用我的Js
- "+"我的行为很奇怪
- 如何删除"在javascript中从我的Json