2015-06-24 99 views
1
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); 
    }); 
}; 

問題代碼在字符串連接部分內。什麼是這個用戶名等於內部的rel =部分,我們如何字符串內插在jQuery中?這是什麼等於這個jQuery的功能?

這似乎是指數據。那是對的嗎?

這些文檔沒有很好地解釋,因爲$ .each這裏有兩個參數:數據和回調。

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

+0

這是指在某個索引處的數據 – depperm

+1

您正在查看的文檔是在each()調用jQuery集時調用的。您應該查看https://api.jquery.com/jQuery.each/(這是jQuery對象上'each()'方法的文檔)。然後你會發現這個「價值」被記錄下來(儘管承認,只是順帶一提)。 – Matt

+0

該文檔說:_值也可以通過** this **關鍵字訪問,_ – Barmar

回答

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>'; 
    }); 

我在哪裏ndex是指每個循環的索引,dataRow是指行對象。

2

是的,因爲data是對象this指向單個對象此陣列的內部的陣列。

您可以通過明確的說法在回調函數中也訪問當前對象:

$.each(data, function(index, obj) { 
    console.log(this === obj); 
});