当我点击关闭链接时,我想关闭我的窗口(只是一个可以拖动的绝对位置的div)
这是我的代码
function ApplicationWindow() {
this.window = $('<div class="window"></div>');
this.create = function create() {
//.....
var closeButton = this.window.find('.close');
closeButton.live('click', this.close);
}
this.close = function close() {
this.window.fadeOut(200);
};
}
当我点击关闭按钮时,执行关闭功能,但问题是我收到错误“this.window is undefined”。那是因为我认为close函数作为回调传递,但我的问题是如何以一种很好的方式解决这个问题?
答案 0 :(得分:1)
请勿使用this
。在JS中,保留字this
根据上下文而改变,因此在这种情况下你想要避免它。
在范围内使用简单变量可以解决问题:
function ApplicationWindow() {
var theWindow = $('<div class="window"></div>');
this.create = function create() {
//.....
var closeButton = theWindow.find('.close');
closeButton.live('click', this.close);
}
this.close = function close() {
theWindow.fadeOut(200);
};
}
答案 1 :(得分:0)
function ApplicationWindow() {
this.window = $('<div class="window"></div>');
this.create = function create() {
//.....
var closeButton = this.window.find('.close');
var self = this;
closeButton.live('click', function() {
self.window.fadeOut(200);
});
}
}
答案 2 :(得分:0)
您使用的是哪个库?您应该能够将该函数绑定到您的对象:
this.close = function close() {
this.window.fadeOut(200);
}.bind(this);
答案 3 :(得分:0)
有关JavaScript的好奇this
- 绑定功能的解释以及如何使用显式闭包或function.bind
解决此问题,请参阅this answer。