2015-03-03 74 views
1

我正在循环一个数据,并使用的map方法创建一个结果。循环完成后,我得到的结果为array基于object这样的:jQuery`map`将数组转换为`dom`元素

[jQuery.fn.init[1], jQuery.fn.init[1], jQuery.fn.init[1], jQuery.fn.init[1], jQuery.fn.init[1]] 

但我需要jQuery基于对象(常规DOM元素)?我怎样才能从map输出?

我在完成循环后尝试使用get()。但投掷error。获得dom输出的正确方法是什么?

这里是我的功能:

this.tbody = this.tableData.map(function (item, index) { 
    tr = $('<tr />', { id: item.ID }); 
    tr.append('<td><input class="selectRow" type="checkbox" /></td>'); 
    that.headerNames.map(function (label) { 
     var newlabel = label.replace(' ', ''); 
     var labelData = item[newlabel]; 
     tr.append('<td>' + labelData + '</td>'); 
    }); 
    console.log(tr); // [tr#66, jquery: "1.11.1", constructor: function, selector: "", toArray: function, get: function…] //i require all trs became a single output 
    return tr; 
}); 

console.log(this.tbody); 
+0

不是基于jQuery的对象也是这样的数组吗? – JNF 2015-03-03 10:26:43

+0

当我安慰,我可以看到里面的'元素'。 – 3gwebtrain 2015-03-03 10:28:18

回答

2

尝试返回从地图处理DOM对象引用,则数组传递给jQuery和尝试

var tbody = this.tableData.map(function (item, index) { 
    var tr = $('<tr />', { 
     id: item.ID 
    }); 
    tr.append('<td><input class="selectRow" type="checkbox" /></td>'); 
    that.headerNames.map(function (label) { 
     var newlabel = label.replace(' ', ''); 
     var labelData = item[newlabel]; 
     tr.append('<td>' + labelData + '</td>'); 
    }); 
    console.log(tr); // [tr#66, jquery: "1.11.1", constructor: function, selector: "", toArray: function, get: function…] //i require all trs became a single output 
    return tr.get(0); 
}); 

this.tbody = $(tbody) 

演示:FiddleProblem