2013-08-16 27 views
0

我有,我動態創建一個表,並將其分配到一個局部變量的方法:使用動態創建HTML內容後使用jQuery

var content = $('<table id="gvCapitalByYear" cellspacing="0" 
     cellpadding="2"/>').append('<tbody/>'); 

然後,我有一個,就是將行添加到上面的循環創建表。但我不能完成這件事。我試過如下:

content=$('#gvCapitalByYear').find('tbody').append('<tr/>'); 

,但它不工作,因爲,在我看來,ID爲「gvCapitalByYear」的元素沒有被附加到任何地方,它只是動態創建和保存在變量。是否有可能以某種方式使用內容變量獲取動態創建的表,添加一定數量的行並重新將其重新分配給內容變量?

回答

1

因爲內容尚未附加到DOM,您將需要使用content變量而不是查詢這些元素的DOM(例如$('#gvCapitalByYear'))。

將表格HTML包裝爲jQuery對象後,您可以像查詢其他任何jQuery對象一樣查詢和操作它。該對象是「活的」,因此一旦添加更多內容,您將不需要重新分配變量content

var content = $('<table id="gvCapitalByYear" cellspacing="0" cellpadding="2"><tbody></tbody></table>'); 
//later, add as many rows as you like 
content.find('tbody').append('<tr><td>Some Content Here</td></tr>'); 

此外,tabletbodytr元素不是自閉的標籤,你需要爲每個爲這個開標記和結束標記是有效的HTML。

Working Demo

+0

是啊,我知道,我必須將它添加到DOM,但我不想。相反,我想使用保留之前創建的html內容的內容變量。 –

+0

@MikeJM明白了,我更新了我的答案和示例 – cfs

+0

如果我知道需要添加多少行,但是要添加到表中的行數是可變的,那麼這樣做可以。這就是我首先創建表,然後進入循環遍歷數組並添加與數組數相同數量的行。 –

0

試試這個

$('body').append('<table id="gvCapitalByYear" cellspacing="0" 
    cellpadding="2"></table>'); 

然後

$('#gvCapitalByYear').append('<tr><td>my data</td><td>more data</td></tr>'); 
+0

同樣,我知道要稍後引用「gvCapitalByYear」,我需要將其附加到正文,或者至少是一些容器在相同的內容中,但這就是爲什麼我需要一種方法來使用本地內容變量來提取html內容。 –