我正在使用extend.js,我遇到了jQuery' $.each
的一些问题,并附加到字符串。
var Test = Class.extend(function(){
this.dom = '<div ';
this.class;
this.id;
this.add_class = function(){
this.dom += 'class = "';
$.each(this.class, function(i,e){
console.log(e);
this.dom += e;
this.dom += ' ';
});
this.dom += '"';
return this;
};
this.add_id = function(){
this.dom += 'data-id = "'+this.id+'" ';
return this.dom;
};
});
var tester = new Test();
tester.class = ["coolClass", "TESTER"];
tester.id = "coolId";
console.log(tester.add_class().add_id());
控制台显示
coolClass
TESTER
<div class = "" data-id = "coolId"
我无法理解为什么我的班级空白?
答案 0 :(得分:1)
this
值被重新分配给function
块内的不同内容。看看
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this
你需要做一些像
这样的事情 var that = this;
$.each(this.class, function(i,e){
console.log(e);
that.dom += e;
that.dom += ' ';
});
答案 1 :(得分:1)
上下文。
在$ .each回调中,this
是当前正在迭代的项目。它不是this
对象Test
。
使用此:
var oThis = this;
$.each(this.class, function(i,e){
console.log(e);
oThis.dom += e;
oThis.dom += ' ';
});