Javascript 在使用jQuery之后,如何在新元素上维护(或重新应用)jQuery绑定;克隆();?

Javascript 在使用jQuery之后,如何在新元素上维护(或重新应用)jQuery绑定;克隆();?,javascript,jquery,clone,dynamic-rebinding,Javascript,Jquery,Clone,Dynamic Rebinding,我有一个使用jQuery“.clone()”添加新行的表单。一切看起来都很好,但我有一个绑定问题。基本上,在初始化时,我对一个字段使用jQuery“.datepicker()”函数(基于类)。如果我单独使用“.clone()”,我就不会在新项中获得任何“.datepicker()”功能。如果我使用“.clone(true)”我会获得该功能,但对于克隆行,它会填充克隆行的日期,而不是实际单击的行 我试过解绑/重新绑,但都不起作用。那么,如何在保持jQuery的所有功能正常工作的同时,将新行追加到表

我有一个使用jQuery“.clone()”添加新行的表单。一切看起来都很好,但我有一个绑定问题。基本上,在初始化时,我对一个字段使用jQuery“.datepicker()”函数(基于类)。如果我单独使用“.clone()”,我就不会在新项中获得任何“.datepicker()”功能。如果我使用“.clone(true)”我会获得该功能,但对于克隆行,它会填充克隆行的日期,而不是实际单击的行

我试过解绑/重新绑,但都不起作用。那么,如何在保持jQuery的所有功能正常工作的同时,将新行追加到表单中呢

最好的

编辑1(jQuery):

function addLineItem(){ $('#charges_table tr:last').clone(true).insertAfter('#charges_table tr:last'); } $(function(){ $('.date_pick').datepicker({"numberOfMonths": 2}); $("#add_line_item").bind('click',function(event){ event.preventDefault(); addLineItem(); $('.date_pick').datepicker('destroy'); $('.date_pick').datepicker(); }) }) 函数addLineItem(){ $(“#charges#table tr:last”).clone(true).insertAfter(“#charges#table tr:last”); } $(函数(){ $('.date_pick').datepicker({“numberOfMonths”:2}); $(“#添加#行#项”).bind('click',函数(事件){ event.preventDefault(); addLineItem(); $('.date_pick').datepicker('destroy'); $('.date_-pick').datepicker(); }) })
仅供参考,我只是在类上绑定,HTML元素没有使用ID。

当您
.clone()
时,是否在将元素插入DOM之前更改其ID?如果没有,您的ID将被复制,这可能是您的问题的根源。

当您
.clone()
时,是否在将元素重新插入DOM之前更改其ID?如果没有,您的ID将被复制,这可能是您的问题的根源。

首先,如前所述,您的方法addLineItem总是要克隆表的最后一行:
$(“#charges_table tr:last”)
。听起来像是要克隆发生单击的表行。如果是这样的话,那么像这样的事情应该可以做到:

function addLineItem(row){
    $(row).clone(true).insertAfter('#charges_table tr:last');
}

$(function(){
    $('.date_pick').datepicker({"numberOfMonths": 2});
    $("#add_line_item").bind('click',function(event){
        event.preventDefault();
        // Pass the closest 'tr' element to the element clicked.
        addLineItem($(this).closest('tr'));
    });
});

我没有测试过这段代码,但它基于我的一个项目中类似的表行克隆代码。

首先,如前所述,您的方法addLineItem总是要克隆表的最后一行:
$('#charges_table tr:last')
。听起来像是要克隆发生单击的表行。如果是这样的话,那么像这样的事情应该可以做到:

function addLineItem(row){
    $(row).clone(true).insertAfter('#charges_table tr:last');
}

$(function(){
    $('.date_pick').datepicker({"numberOfMonths": 2});
    $("#add_line_item").bind('click',function(event){
        event.preventDefault();
        // Pass the closest 'tr' element to the element clicked.
        addLineItem($(this).closest('tr'));
    });
});

我还没有测试过这段代码,但它基于我的一个项目中类似的表行克隆代码。

如果没有看到代码,很难说。您是否可以编辑您的问题以包含一个简短的代码示例,或者发布一个指向说明问题的JSFIDLE页面的链接?stackoverflow.com/questions/3628405/clone-live-function-with-context-parameter-jquery-1-4clone返回对新元素的引用。。你可以再添加一次处理程序。很难说没有看到代码。您是否可以编辑您的问题以包含一个简短的代码示例,或者发布一个指向说明问题的JSFIDLE页面的链接?stackoverflow.com/questions/3628405/clone-live-function-with-context-parameter-jquery-1-4clone返回对新元素的引用。。您可以再次添加处理程序。谢谢。我不确定我们是否意见一致。也许我没有解释清楚。我的问题不是实际的克隆,而是“.datepicker()”绑定在新行上无法正常工作。无论我如何进行克隆,“.datepicker()”功能始终应用于“原始”行的最后一行。我认为.datepick元素位于行中的一个单元格内,对吗?如果是这样,如果执行此操作会发生什么:$(row.clone().insertAfter(“#charges_table tr:last”).find(“.datepick”).datepicker();再近一点吗?谢谢你。我不确定我们是否意见一致。也许我没有解释清楚。我的问题不是实际的克隆,而是“.datepicker()”绑定在新行上无法正常工作。无论我如何进行克隆,“.datepicker()”功能始终应用于“原始”行的最后一行。我认为.datepick元素位于行中的一个单元格内,对吗?如果是这样,如果执行此操作会发生什么:$(row.clone().insertAfter(“#charges_table tr:last”).find(“.datepick”).datepicker();再近一点?