2010-09-09 70 views
6

我有一張如下所示的表格。Jquery複製和粘貼DOM節點?

<tr> 
    <td>Link Name</td> 
    <td><a href="#" class="edit">Edit</a></td> 
</tr> 

在表格的底部,我有以下內容。

<tr> 
    <form class="hidden create"> 
    <h3>Add Link</h3> 
    ... 
    <input type="hidden" name="form_id" value="{menu-id}" /> 
    </form> 
</tr> 

爲了避免HTML的頁面海量我認爲這將是冷靜,如果jQuery的可以複製的創建形式,調整一些屬性然後使它所顯示的連結一行之後。唯一的疑問是如何..

所以這裏是我的問題。

1)如何抓取創建表單並將其保存爲jQuery變量?

2)如何編輯隱藏字段?我知道如何更改屬性,但是如何在變量內的表單處於選中狀態?

3)如何在自己的行上編輯鏈接後將此表單粘貼到我的表中?我需要像父母之後的東西?

由於負載

+0

這並不回答你的問題,但我覺得我應該指出,你的第二個代碼塊是無效的HTML,因爲不包含任何​​s或 s。您應該添加​​或將該塊移到表格外。 – Spudley 2010-09-09 14:41:56

回答

12

1)將具有以下形式的拷貝在一個變量:

create_form.find(':hidden[name=form_id]').doSomething()... 

3)放置形式:

var create_form = $('form.create').clone(); 

2)從可變獲取隱藏的輸入之後.edit鏈接在同一行(我假設這是在事件處理程序中):

$(this).closest('tr').find('a.edit').after(create_form); 
1

這會創建所選元素的副本。如果您現在使用form-變量,則原文不會被操縱。

編輯隱藏字段的作品完全一樣操縱其它DOM元素:

form.attr('action', 'some-new-action'); 

可以「粘貼」使用幾種方法你的形式。可能的解決方案是:

form.appendTo('#some-parent'); 
form.after('#some-parent'); 
+0

感謝您的全面回答,在克隆之後,我將如何更改表單中的輸入元素? – JasonS 2010-09-09 14:47:52

+0

您可以使用所有可用的jQuery函數遍歷/操作:'form.find('。some-input')。attr('name','new-name')'。 – jwueller 2010-09-09 14:50:28

0

訪問http://api.jquery.com/clone/了詳細的解釋。

這是快速預覽

HTML

<div class="container"> 
    <div class="hello">Hello</div> 
    <div class="goodbye">Goodbye</div> 
</div> 

的Javascript

$('.hello').clone().appendTo('.goodbye'); 

輸出

<div class="container"> 
    <div class="hello">Hello</div> 
    <div class="goodbye"> 
    Goodbye 
    <div class="hello">Hello</div> 
    </div> 
</div> 

希望它可以幫助..