从复制中删除行后添加重复行

时间:2012-02-11 16:44:16

标签: jquery

enter image description here我正在尝试向表中添加新行。新行与下一行重复,几乎没有变化。新行将删除嵌套表中的所有行,但第一行。我创建了一个JSFiddle链接,您可以在其中找到更多详细信息和代码:

http://jsfiddle.net/rL5aZ/1/

var rowId = $("#menu").attr("rowId");

    var currentRow = $("#" + rowId);

    var rowToBeAdded = currentRow.next();
    rowToBeAdded.clone().insertAfter(currentRow)
    .find(".TBLCONTENTS:not(:first),.TBLALTCONTENTS:not(:first)").remove();

出于某种原因,以下情况有效,但上述情况并非如此:

 rowToBeAdded.clone().insertAfter(rowToBeAdded).find(".TBLCONTENTS:gt(0),.TBLALTCONTENTS:gt(0)").remove();

1 个答案:

答案 0 :(得分:1)

这是你的代码:

var currentRow = $("#moduleRow");
var rowToBeAdded= $("#moduleRow").next().find(".content").not(":first").remove().find(".altcontent").not(":first").remove();
$(currentRow).after(rowToBeAdded);
  • 您需要.clone()要复制的元素,否则插入/追加它只会移动它。
  • 您的表格结构缺少td(您有<table><tr><table>,应为<table><tr><td><table>
  • .find(".content").not(":first").remove().find(".altcontent")将首先移除除第一个之外的所有.content,然后尝试在第一个.altcontent内找到.content,这可能不是您想要的。您可以使用.end()返回上一个jquery对象
  • 您在$('#moduleRow')之后插入了更新的行,它应该在原始行($('#moduleRow').next())之后插入

var currentRow = $("#moduleRow").next();
var rowToBeAdded = currentRow.clone()
    .find(".content:not(:first),.altcontent:not(:first)").remove().end()
    .insertAfter(currentRow);

请参阅http://jsfiddle.net/orig/rL5aZ/4/

修改

实际上它可以更简单:

var currentRow = $("#moduleRow").next();
currentRow.clone().insertAfter(currentRow)
    .find(".content:not(:first),.altcontent:not(:first)").remove();