2016-10-28 50 views
0

我通過添加行和列與JS和JQuery創建一個表。 這是我的代碼:jquery contentedable所有單元格不是行

function AddColumnToDataTable(){ 
     $('#tableHeader').append("<th> Header </th>").attr("contenteditable", true); 
// Add a new ColumnHeader and set the property "editable" 
    } 

    function AddRowToDataTable(){ 
     var count = $('#tableHeader').find("th").length; 
// Get the count of Columns in the table 

     var newRow = $('#tableBody').append("<tr></tr>"); 
// Add a new Row 

     for(var i = 0; i < count ; i++){ 
      newRow.find('tr').last().append("<td> Content </td>").attr("contenteditable", true); 
// Fill the cells with a default text and set the property "editable" 
     } 
    } 

所以我的問題是,我怎麼能寫的代碼,每個單元格可編輯?目前,當我點擊時,整行可編輯?每個單元應該有這個屬性。

我發現了一個代碼,可以幫助:

//$('table th:nth-child(4)').attr("contenteditable", true) 

這使得4頭/格進行編輯,但我該如何使用它,每一個新創建的頁眉/細胞是第n個孩子?

+0

我不是jQuery的專家,但因爲你使用.append()插入一個html字符串,不妨試試字符串' Content',因爲我認爲jQuery返回.append()之後的最後一行,因此您將設置contentedable到新元素的那一行instwead。 – Shilly

回答

0

jQuery append函數不返回新的[附加]元素,而是返回附加到的元素,因此在您的代碼中的錯誤。無論如何,只需在附加字符串中手動設置屬性就更簡單了。因此,改變這一行:

newRow.find('tr').last().append("<td> Content </td>").attr("contenteditable", true); 

要這樣:

newRow.find('tr').last().append("<td contenteditable="true"> Content </td>") 

應該這樣做

0

它曾與

$('table td').last().attr("contenteditable", true); 
相關問題