1

我试图在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()不是函数

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

4

1 回答 1

0

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

您可以通过传递thisapply()来解决问题:

this.onChange = function(field, func) {
    this.getField(field).live("change", function() {
        return func.apply(this);
    });
};
于 2012-11-17T11:52:46.030 回答