jquery $ .each不附加到字符串

时间:2014-10-05 03:13:30

标签: javascript jquery

我正在使用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" 

我无法理解为什么我的班级空白?

2 个答案:

答案 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 += ' ';
});