在jquery代码块中使用时出现'this'问题

时间:2010-10-17 14:31:04

标签: javascript jquery oop dom

我想在jquery代码块中使用调用对象的值,但是'this'被映射到jquery对象而不是eh调用者!如何解决这个问题?

// 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
        });
    };
};

请建议如何在jquery代码块中使用'this'来引用类的变量/对象,而不是HTML / jQuery。

由于

2 个答案:

答案 0 :(得分:2)

尝试将this对象保存到本地变量

    var myObject = this;
    $(this._elementClass).each(function(_index, _element){
        myObject._localVars._dots[_index] = _element;
    });

答案 1 :(得分:0)

您可以使用the jQuery.proxy method设置所需的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);