我有以下javascript代码。
var Test = function(){
$("#"+elementId).click(function(){
// How to call Test.callbackTest here?
});
}
Test.prototype.callbackTest = function(){
//code
}
如果我想在点击事件中调用callbackTest(),我是否必须使用this.callbackTest()?
还是有更好的方法吗?
答案 0 :(得分:3)
如果你想使用click函数,this.callbackTest()将无法工作,因为它将绑定到window对象而不是你的函数。有很多方法可以做到这一点......一个快速的方法
var Test = function(){
var that = this
$("#"+elementId).click(function(){
// How to call Test.callbackTest here?
that.callbackTest();
});
}
Test.prototype.callbackTest = function(){
//code
}
jquery还提供了proxy解决方案,我建议您查看一下。如果您使用它,您的代码就像
var Test = function(){
$.proxy(this.callbackTest,this) // This ensures that wheneven callbackTest is called , 'this' inside callbackTest will be bound to current object , in this case Test
$("#"+elementId).click(function(){
//AND THEN YOU CAN USE THIS here
this.callbackTest();
});
}
Test.prototype.callbackTest = function(){
//code
}
答案 1 :(得分:1)
您可以callbackTest
私有:
var Test = function(){
function callbackTest(){
//code
}
$("#"+elementId).click(callBackTest);
};
否则应该是
var Test = function(){
var me = this;
$("#"+elementId).click(function(){
me.callbackTest();
});
};