如何克隆要克隆的事件和数据,但是应用于最新的克隆?

时间:2011-01-11 01:20:15

标签: javascript jquery clone

您可以使用它的事件和数据克隆元素,但事件仍然适用于原始对象而不是新对象。

我使用jsfiddle来演示问题:http://jsfiddle.net/VZZG4/

重现: 1.点击克隆按钮 2.在新文本输入中,键入“新建” 3.点击新克隆按钮 实际结果:最新的克隆说“测试” 预期结果:最新的克隆说“新”

问题:如何克隆要克隆的事件和数据,但是应用于最新的克隆?

2 个答案:

答案 0 :(得分:2)

使用nearest()克隆预期的元素......

$(document).ready(function() {
    $('#clone').click(function() {
        $(this).closest('#container').clone(true).appendTo('#wrap');
    });
});

updated fiddle

我建议您使用class代替id。重复id无效html。

答案 1 :(得分:2)

您错误地克隆带ID的对象。在大多数浏览器中,如果您有多个具有相同ID的元素,则将返回第一个元素。因此,$('#container')将始终返回值为Test的第一个。

改为应该克隆类的元素。

HTML:

<div id="wrap">
    <div class="container">
        <input type="text" class="edit" value="Test">
        <input type="button" class="clone" value="Clone">
    </div>
</div>

JavaScript的:

$(document).ready(function() {
    $('.clone').click(function() {
        $(this).closest('.container').clone(true).appendTo('#wrap');
    });
});

检查代码的修改版本http://jsfiddle.net/VZZG4/2/

参考: closest