проблемы с этим при использовании внутри блока кода jquery - PullRequest
2 голосов
/ 17 октября 2010

Я хочу использовать значения вызывающего объекта в блоке кода jquery, но «this» сопоставляется с объектом jquery, а не с вызывающим объектом! Как решить это ПОЖАЛУЙСТА?

// class
myClass = function (){
    // member object
    this._localVars = {
        _elementClass:'.elem-class',
        _dots:null,
        _dotStatus:null
    };

    // member function
    this.func1 = function() {
        $(this._elementClass).each(function(_index, _element){
            // this._localVars._dots[_index] = _element; ... this line throws an error 'this._localVars' is undefined ... as 'this' is html element here and not an object of the calling class
        });
    };
};

Подскажите, пожалуйста, как я могу использовать 'this' внутри блока кода jquery для ссылки на переменные / объекты класса, а не на HTML / jQuery.

Спасибо

Ответы [ 2 ]

2 голосов
/ 17 октября 2010

Попробуйте сохранить this объект в локальной переменной

    var myObject = this;
    $(this._elementClass).each(function(_index, _element){
        myObject._localVars._dots[_index] = _element;
    });
0 голосов
/ 17 октября 2010

Вы можете использовать метод jQuery.proxy , чтобы установить желаемое значение this.

Вы передаете свою функцию в качестве первого параметра, а текущий this в качестве второго.

myClass = function (){
    this._localVars = {
        _elementClass:'.elem-class',
        _dots:[],
        _dotStatus:null
    };
    this.func1 = function() {
        $(this._localVars._elementClass).each( $.proxy(function(_index, _element) {
             this._localVars._dots[_index] = _element;
        }, this));
    };
};

var cl = new myClass();

cl.func1();

console.log(cl._localVars._dots);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...