Javascript jQuery-单击时未定义的函数调用
我想在单击事件上调用一个函数,我的同事定义了如下所示的函数。不知怎的,我无法访问它,怎么了Javascript jQuery-单击时未定义的函数调用,javascript,jquery,Javascript,Jquery,我想在单击事件上调用一个函数,我的同事定义了如下所示的函数。不知怎的,我无法访问它,怎么了 function Start(data) { this.move= function() { .... }; $('.button').click(function(){ this.move(); }); } 尝试此操作,您必须记住对主函数的引用 function Start(data) { var that = this; this.move = function
function Start(data) {
this.move= function() {
....
};
$('.button').click(function(){
this.move();
});
}
尝试此操作,您必须记住对主函数的引用
function Start(data) {
var that = this;
this.move = function() {
....
};
$('.button').click(function(){
that.move();
});
}
尝试此操作,您必须记住对主函数的引用
function Start(data) {
var that = this;
this.move = function() {
....
};
$('.button').click(function(){
that.move();
});
}
单击函数中的该
是单击的元素。将对象的引用保存在函数外部的变量中并使用它:
function Start(data) {
var self = this; //HERE
this.move= function() {
....
};
$('.button').click(function(){
self.move();
});
}
这可能会为您提供有关上述修复的更多解释。
单击函数中的此
是单击的元素。将对象的引用保存在函数外部的变量中并使用它:
function Start(data) {
var self = this; //HERE
this.move= function() {
....
};
$('.button').click(function(){
self.move();
});
}
这可能会为您提供有关上述修复的更多解释。另一种保持作用域的方法是使用
保持作用域的另一种方法是使用
在使用jQuery绑定的事件处理程序中,
此
引用绑定处理程序的DOM元素。看
您可以使用单击处理程序上的函数#bind
覆盖jQuery的绑定:
function Start(data) {
this.move= function() {
....
};
$('.button').click(function(){
this.move();
}.bind(this));
}
请注意浏览器对函数#bind
的支持——如果您针对较旧的浏览器,则需要一个polyfill,或者只需将this
的值分配给另一个变量。在使用jQuery绑定的事件处理程序中,this
指绑定处理程序的DOM元素。看
您可以使用单击处理程序上的函数#bind
覆盖jQuery的绑定:
function Start(data) {
this.move= function() {
....
};
$('.button').click(function(){
this.move();
}.bind(this));
}
注意浏览器对函数#bind
的支持——如果您针对较旧的浏览器,您需要一个polyfill,或者只需将此
的值分配给另一个变量。您是否将jquery导入html?是否将jquery导入html?您比我更了解它<代码>$。代理
是更简洁的方法。你比我快<代码>$。代理是更简洁的方法。