克隆/删除 TR 行 - 几乎可以正常工作

Clone / Remove TR Row - Almost working

我正在使用我在此 fiddle 中找到的代码,它几乎完美地满足了我的需要。

该代码允许我克隆另一个 TR 并可以选择删除克隆的行。

我遇到的问题是我不想删除所有行。

如何阻止脚本删除第一行?

我试过了:

var numItems = $('.DeleteBoxRow').length
if (numItems >1) {
 $(this).closest('tr').remove();
}

但这似乎有点碰运气。

我还发现,如果我添加然后删除行,我会遇到无法再次添加的问题。

有什么关于如何排序的建议吗? 谢谢

由于您正在处理动态元素,因此请使用 event delegation, .delegate() is used since in the fiddle jQuery 1.6 is used, if you are using jQuery >= 1.7 use .on()

$('#BoxTable').delegate('.DeleteBoxRow:not(#TemplateRow .DeleteBoxRow)', 'click', function() {

        $(this).closest('tr').remove();
});

还需要更改克隆行的 ID,因为元素的 ID 必须是唯一的。同样在上面的选择器中,我们排除了 ID 为 TemplateRow 的元素中的 .DeleteBoxRow 元素,因此如果还有任何其他行具有该 ID,则删除将不起作用

var $newRow = $('#TemplateRow').clone(true).removeAttr('id');

演示:Fiddle