2010-09-09 53 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> 

希望它可以帮助..