JQuery克隆未保留无线电和选择状态

JQuery克隆未保留无线电和选择状态,jquery,clone,Jquery,Clone,单击复制链接时,我正在克隆当前行。创建新行时,单选按钮的旧状态不会保留 我需要克隆当前行,它也应该保留旧行的输入元素状态 代码 $(“#MyLastOrder tr.BtnPlus”)。单击(函数(){ $($(this.parent().parent()).clone(true,true).appendTo(“#MyLastOrder”); var totalRows=document.getElementById(“totalRows”).value; var qtyrow=“totalq

单击复制链接时,我正在克隆当前行。创建新行时,单选按钮的旧状态不会保留

我需要克隆当前行,它也应该保留旧行的输入元素状态

代码

$(“#MyLastOrder tr.BtnPlus”)。单击(函数(){
$($(this.parent().parent()).clone(true,true).appendTo(“#MyLastOrder”);
var totalRows=document.getElementById(“totalRows”).value;
var qtyrow=“totalqty”+eval(parseInt(totalRows)+1);
var-weightrow=“weight_”+eval(parseInt(totalRows)+1);
var brandrow=“br_”+eval(parseInt(totalRows)+1);
$(“#MyLastOrder tr:last”).find(“input:radio”).each(函数(){
var curName=$(this.attr('name');
log(“curname”+$(this.attr('name')+curname.substr(0,2));
$(this).attr('name',function(\ux,id){
var currentNameAttr=$(this.attr('name');
if(curName.substr(0,2)=“br”){
$(this.attr('name',brandrow));
}
if(curName.substr(0,2)=“we”){
$(this.attr('name',weightrow));
}
});
});
$(“#MyLastOrder tr:last”).find(“select”).each(函数)(){
var curName=$(this.attr('name');
log(“curname”+$(this.attr('name')+curname.substr(0,2));
$(this).attr('name',function(\ux,id){
var currentNameAttr=$(this.attr('name');
if(curName.substr(0,3)=“tot”){
$(this.attr('name',qtyrow);
}
});
});
var incTotalRows=parseInt(totalRows)+1;
document.getElementById(“totalrows”).value=incTotalRows;
});

烙印
类型
数量
xyz
xyz
xyz
1gm
2gm
1. 2. 3. 4. 5. 6. 7. 8. 9 10
它不保留前一行的状态,因为您在新行中附加了与前一行同名的单选按钮。所以,我们当然要取消检查

您要做的是首先克隆行,然后在克隆行中查找单选按钮,更改名称,然后追加克隆行

var $clone = $($(this).parent().parent()).clone(true, true);

$clone.find(":radio").each(function () {
    // previous code
});

// and later
$clone.appendTo("#MyLastOrder");

演示:你的堆栈代码段不工作。单击按钮根本不起任何作用。虽然已经回答了您的问题,但您为什么认为这里应该使用
eval
eval(parseInt(totalRows)+1)
?虽然
eval
不应该在常规代码中使用,但它在这里没有任何意义。谢谢dfsq,它节省了我的时间。谢谢你用小提琴写的代码。