如何从jQuery函数中引用Javascript中的父“class”方法?例如:
$Object.prototype.TestFunction = function(arg){
alert(arg);
}
$Object.prototype.foo = function(){
$(something).click(function(){
this.TestFunction("Hello"); //Obviously doesn't work.
});
}
我有可预测的数据集,需要在页面上查看多个集合和结果,这就是为什么我构建了一个对象来处理它。但是,当我使用任何“jQuery”并尝试从内部引用对象属性或方法时,它显然不起作用。
这可能吗?
非常感谢您提前花时间和精力。
答案 0 :(得分:4)
只需将this
分配给变量,并在闭包中引用变量。
$Object.prototype.foo = function(){
var that = this; //<--here
$(something).click(function(){
that.TestFunction("Hello");
});
};
<强> Example on jsfiddle 强>
答案 1 :(得分:3)
我首选的方法是使用$ .proxy:
$Object.prototype.foo = function(){ $(something).click($.proxy(this.TestFunction,this); };
它更干净,并且还将任何参数(如事件)传递给处理函数。