关于从该类使用的事件处理程序内部访问Javascript类成员变量的正确方式,我有一个简短的问题。例如:
function Map() {
this.x = 0;
this.y = 0;
$("body").mousemove( function(event) {
this.x = event.pageX; // Is not able to access Map's member variable "x"
this.y = event.pageY; // Is not able to access Map's member variable "y"
});
}
事件处理程序中的"this.x“尝试影响触发事件的元素的"x”成员变量,而不是更改"Map“类的成员变量。从事件处理程序中访问"Map“类的成员变量的正确方法是什么?
任何帮助都是非常感谢的--我一直在抓挠我的头。
干杯,查莉
发布于 2010-06-19 23:25:30
由于this
在事件上下文中发生变化(通常指向global
),因此您需要在事件外部存储对自己的引用:
function Map() {
this.x = 0;
this.y = 0;
var _self = this;
$("body").mousemove( function(event) {
_self.x = event.pageX; // Is now able to access Map's member variable "x"
_self.y = event.pageY; // Is now able to access Map's member variable "y"
});
}
发布于 2013-09-01 07:49:35
您还可以使用JQuery.proxy创建一个带有上下文的代理函数。然后,您可以将代理绑定到事件。
下面是一个示例:
var init_handler = $.proxy(this.init, this);
$('#page_id').bind('pageinit', init_handler);
https://stackoverflow.com/questions/3076010
复制相似问题