如何在jquery事件中返回对象方法

时间:2012-11-17 11:48:26

标签: javascript jquery oop

我正在尝试在文本字段的事件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()不是函数

我认为这与范围严格相关,但我无法弄明白。

1 个答案:

答案 0 :(得分:0)

那是因为你没有在与调用者相同的上下文中调用func(),所以this没有绑定到同一个对象。

您可以将this传递给apply()

来解决问题
this.onChange = function(field, func) {
    this.getField(field).live("change", function() {
        return func.apply(this);
    });
};