2013-10-09 2 views
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

Проблема в том, 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)) 
} 
Смежные вопросы