我想在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。
由于
答案 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);