0

jQueryを使い始めましたが、次の問題があります。

function AClass(){
    this.attribute = /*something*/
}

AClass.prototype.COMPLETE= function() {
    /*FROM HERE I WANT TO ACCESS TO THE ABOVE "this.attribute"!!*/
}

AClass.prototype.doSomething = function() {
    $("something").animate(..,..,.., this.COMPLETE);
}

だから、それは私が直面している問題です。その完全なアニメーション関数から、AClassの属性の値にアクセスしたいと思います。重要なのは、そのコンテキストでthisは、アニメーション化されているDOM要素を指しており、呼び出し元オブジェクトを指していないということです。

4

2 に答える 2

0

元のthisへの参照を変数に保存します。

function AClass(){
    this.attribute = /*something*/
    var self = this;

    AClass.prototype.COMPLETE= function() {
        /* Use: self.attributes */
    }

    AClass.prototype.doSomething = function() {
        $("something").animate(..,..,..,COMPLETE);
    }
}
于 2012-07-21T08:04:06.277 に答える
0

$.proxy()このメソッドを使用して、特定のコンテキストをコールバックにバインドできます。または、古いブラウザ(IE <9など)を気にしない場合は、(JS 1.8.5).bind()メソッドを使用できます。yourFunction基本的に、コールバックとして提供する必要がある場所は次のとおりです。

$.proxy(yourFunction, theRequiredContext)
// or
yourFunction.bind(theRequiredContext)

サンプルコードのコンテキストでは:

function AClass(){
    this.attribute = /*something*/
}

AClass.prototype.COMPLETE= function() {
    /*FROM HERE I WANT TO ACCESS TO THE ABOVE "this.attribute"!!*/
}

AClass.prototype.doSomething = function() {
    $("something").animate(..,..,..,$.proxy(this.COMPLETE, this));
}

デモ: http: //jsfiddle.net/P9mbG/

于 2012-07-21T15:52:17.460 に答える