function populateTable() {
// Empty content string
var tableContent = '';
// jQuery AJAX call for JSON
$.getJSON( '/users/userlist', function( data ) {
// Stick our user data array into a userlist variable in the global object
userListData = data;
// For each item in our JSON, add a table row and cells to the content string
$.each(data, function(){
tableContent += '<tr>';
tableContent += '<td><a href="#" class="linkshowuser" rel="' + this.username + '">' + this.username + '</a></td>';
tableContent += '<td>' + this.email + '</td>';
tableContent += '<td><a href="#" class="linkdeleteuser" rel="' + this._id + '">delete</a></td>';
tableContent += '</tr>';
});
// Inject the whole content string into our existing HTML table
$('#userList table tbody').html(tableContent);
});
};
有问题的代码在字符串连接部分内。什么是this.username等于rel = section内部,我们如何在jquery中对这个字符串进行插值?
这似乎是指数据。这是对的吗?
在这些文档中没有很好地解释,因为$ .each这里有两个参数......数据和回调。
答案 0 :(得分:2)
是的,因为data
是对象数组this
指向此数组内的单个对象。
您还可以通过回调函数中的显式参数访问当前对象:
$.each(data, function(index, obj) {
console.log(this === obj);
});
答案 1 :(得分:1)
这个关键字只是对当前行的引用,虽然这可以用更容易理解的方式重写,请更改下面的代码
$.each(data, function(){
tableContent += '<tr>';
tableContent += '<td><a href="#" class="linkshowuser" rel="' + this.username + '">' + this.username + '</a></td>';
tableContent += '<td>' + this.email + '</td>';
tableContent += '<td><a href="#" class="linkdeleteuser" rel="' + this._id + '">delete</a></td>';
tableContent += '</tr>';
});
到
$.each(data, function(index,dataRow){
tableContent += '<tr>';
tableContent += '<td><a href="#" class="linkshowuser" rel="' + dataRow.username + '">' + dataRow.username + '</a></td>';
tableContent += '<td>' + dataRow.email + '</td>';
tableContent += '<td><a href="#" class="linkdeleteuser" rel="' + dataRow._id + '">delete</a></td>';
tableContent += '</tr>';
});
其中index指的是每个循环的索引,dataRow指的是行对象。