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 元素。

一种解决方案是使用闭包变量

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

另一种是使用$.proxy()传递自定义执行上下文

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