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いないため、同じオブジェクトにバインドされていないためです。

apply()に渡すことで問題を修正できthisます:

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