这个jquery函数里面的内容是什么?

时间:2015-06-24 20:34:05

标签: jquery

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这里有两个参数......数据和回调。

https://api.jquery.com/each/

2 个答案:

答案 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指的是行对象。