我想在click事件上调用一个函数,我的同事定义了如下所示的函数。不知怎的,我无法访问它,出了什么问题?
function Start(data) {
this.move= function() {
....
};
$('.button').click(function(){
this.move();
});
}
答案 0 :(得分:3)
this
是单击的元素。将对象的引用保存在函数外部的变量中并使用它:
function Start(data) {
var self = this; //HERE
this.move= function() {
....
};
$('.button').click(function(){
self.move();
});
}
Here's an article可能会为您提供有关上述修复的更多解释。
答案 1 :(得分:1)
试试这个,你必须记住对你的主要功能的引用。
function Start(data) {
var that = this;
this.move = function() {
....
};
$('.button').click(function(){
that.move();
});
}
答案 2 :(得分:1)
保持范围的另一种方法是使用jQuery's proxy()
$('.button').click($.proxy(this.move, this));
答案 3 :(得分:1)
在使用jQuery绑定的事件处理程序中,this
引用处理程序绑定的DOM元素。请参阅jQuery Event Basics。
您可以使用点击处理程序上的this
覆盖jQuery的function#bind
绑定:
function Start(data) {
this.move= function() {
....
};
$('.button').click(function(){
this.move();
}.bind(this));
}
谨防浏览器对function#bind
的支持 - 如果您定位旧浏览器,则需要填充或只需将this
的值分配给另一个变量。