这是我的问题,我试图让它尽可能短:
function Game()
this.clickStartGame = function() {
$('#xxx').fadeOut(function() {
console.log(this);
/* how to call this.showInformation() from here? */
});
};
this.showInformation = function () {
/* blabbla */
}
}
var m = new Game();
m.clickStartGame();
如何在this.showInformation()
事件结束后致电fadeOut()
?
答案 0 :(得分:2)
默认情况下,fadeOut()处理程序this
内部的问题将引用淡出的元素。
一个简单的解决方案是使用闭包变量并使用它来调用方法
function Game() {
this.clickStartGame = function () {
var self = this;
$('#xxx').fadeOut(function () {
console.log(self);
/* how to call self.showInformation() from here? */
});
};
this.showInformation = function () {
/* blabbla */
}
}
另一种方法是使用$.proxy() / Function.bind()将自定义执行上下文传递给fadeOut()回调,如
function Game() {
this.clickStartGame = function () {
$('#xxx').fadeOut($.proxy(function () {
console.log(this);
/* how to call this.showInformation() from here? */
}, this));
};
this.showInformation = function () {
/* blabbla */
}
}
答案 1 :(得分:0)
function Game()
var gameObj = this;
this.clickStartGame = function() {
$('#xxx').fadeOut(function() {
console.log(this);
gameObj.showInformation();
/* how to call this.showInformation() from here? */
});
};
this.showInformation = function () {
/* blabbla */
}
}
这会有用吗?