2011-10-26 29 views
0

我有一個表格和它下面的鏈接。我需要能夠點擊該鏈接,複製上面的表格及其所有內容,並將其粘貼在原始表格下方。複製HTML瓦特/ jQuery

<table> 
... 
</table> 
<br> 

<a href="#" id="copyTbl">copy</a> 

我想這樣的事情,但沒有成功

$("#copyTbl").click(function() { 
    $(this).closest("table").html().clone().appendTo("br"); 
}); 

上午我不當穿線呢?

+0

您是否打算插入br標籤? – kinakuta

回答

2

嘗試這樣的事情,簡短:

http://jsfiddle.net/wfqa7/6/

編輯:使用標識克隆元素的時候要小心:P

編輯:克隆http://jsfiddle.net/wfqa7/8/

+0

它也會克隆ID嗎?我想克隆是克隆,哈? – santa

+0

是的,它克隆了整個DOM元素,ID和所有...可能更好選擇因爲具有相同類的多個元素不違反任何標準:P – jbabey

+1

可以在克隆()之後重新編寫ID(id)=「myTable」 - > id =「myTable1」 – santa

3

.html()返回一個字符串。
你不能克隆一個字符串。

您應該調用.clone()返回新的DOM節點或.html()以返回原始HTML字符串,但不是兩者都返回。

此外,你不能把一個表內<br />;你應該打電話insertAfter;不是appendTo

+0

+1,我錯過了一個 –

4

這裏有幾個問題。 closest尋找第一個匹配的祖先。由於鏈接不包含在表格中,因此不匹配。您需要根據您的完整html結構來匹配它,也許是id或其他一些選擇器。

第二,你不能追加到br因爲appendTo將元素放在裏面而br沒有「裏面」。您想用insertAfter代替。

編輯:正如由SLaks指出的,刪除html並克隆該表,您不能克隆該字符串。

+0

+1,但是這並沒有解決'.html()。clone()'問題。 – lonesomeday

+0

好的,假設我不知道ID,並且我已經添加了一堆表格,如何克隆最後一個表格,即最接近鏈接的表格? – santa

+0

如果這些是頁面上唯一的表格,你可以使用'$(「table」)。last()',很難說不知道整個頁面。 –

1

我是不是正確地串起了它?

是和否。 .html()返回一個字符串,該字符串沒有.clone()方法。 無論是克隆的元素,使用.html()

$("#copyTbl").click(function() { 
    $(this).closest("table").clone().insertAfter("br"); 
    // or 
    $("br").after($(this).closest("table").html()); 
}); 

字符串是不變的,所以沒有必要進行克隆的方法。