1

内部関数内でjQuery関数を使用するクラスがあります。jQuery コールバック関数内でメンバー変数を参照するにはどうすればよいですか?

以下のコードを参照してください。

    var UriParser = function(uri) {
        this._uri = uri; // let's say its http://example.com
    };

    UriParser.prototype.testAction = function() {
        $('a').on('click', function(event) {
            // I need the above this._uri here, 
            // i.e. http://example.com              
        }
    }
4

1 に答える 1

4

問題はthis、イベント ハンドラー内でオブジェクトを参照せず、UriParserクリックされた dom 要素を参照していることです。

1つの解決策は、クロージャ変数を使用することです

UriParser.prototype.testAction = function () {
    var self = this;
    $('a').on('click', function (event) {
        //use self._uri
    })
}

もう1つは、$.proxy()を使用してカスタム実行コンテキストを渡すことです

UriParser.prototype.testAction = function () {
    $('a').on('click', $.proxy(function (event) {
        //use this._uri
    }, this))
}
于 2013-10-09T16:58:53.633 に答える