我正在尝试在文本字段的事件jQuery.change()
上返回一个对象方法,
这是代码:
var Utente = function(indice){
this.Indice = indice;
this.Dati = new Array();
this.initialize = function() {
this.Dati['stato_civile'] = this.getField('stato_civile').val();
this.onChange('stato_civile',this.checkObbligatorieta);
}
this.getField = function(name) {
return $('#'+indice+name);
}
this.onChange = function(field, func) {
this.getField(field).live('change',function() {
return func.apply();
});
}
this.checkObbligatorieta = function() {
this.Dati['stato_civile'] = this.getField('stato_civile').val();
[...]
}
this.initialize();
}
使用这个我得到字段"#stato_civile"
正确返回函数this.checkObbligatorieta
但它给了我一个错误:
** this.getField('stato_civile').val()
不是函数
我认为这与范围严格相关,但我无法弄明白。
答案 0 :(得分:0)
那是因为你没有在与调用者相同的上下文中调用func()
,所以this
没有绑定到同一个对象。
您可以将this
传递给apply():
this.onChange = function(field, func) {
this.getField(field).live("change", function() {
return func.apply(this);
});
};