2013-08-22 90 views
-2

我有一个脚本可以克隆最后一个表格行,并通过单击[+]图标将其插入到我的表格底部。我想要做的是通过单击[ - ]图标允许删除最后一个表格行。这是可能的吗?如果是这样,有人能指引我朝着正确的方向吗?颠倒Javascript功能

<script type="text/javascript"> 
$(document).ready(function() { 
    $("#add").click(function() { 
     $('#mytable tbody>tr:last').clone(true).insertAfter('#mytable tbody>tr:last'); 
     $('#mytable tbody>tr:last #itemid').val(''); 
     $('#mytable tbody>tr:last #itemdesc').val(''); 
     return false; 
    }); 
}); 
</script> 
+0

我很惊讶的是,在这样一个网站,人们都应该互相帮助存在嘲讽。 –

+0

事实上,它很好... http://meta.stackexchange.com/q/5314/217110 – Liam

回答

1

是,jQuery的已调用的函数.remove()

$("#remove").click(function(e) { 
     $('#mytable tbody>tr:last').remove(); 
     e.preventDefault(); // dont use return false, use preventDefault(); 
    }); 
}); 

Here you can find some info why you should not user return false; unless you know what you are doing

你可以把它多一点快

$("#remove").click(function(e) { 
     $('#mytable tbody tr').filter(':last').remove(); 
     e.preventDefault(); 
    }); 
}); 
+1

如果只有'tbody's,'tbody'不需要,否则'thead'的最后一行会也被删除。 –

+0

你是对的,相应地更新了答案 – Martijn

2

.remove()方法就是你”寻找:

$("#remove").click(function(e) { 
    e.preventDefault(); 
    $('#mytable > tbody > tr:last-child').remove(); 
}); 

e.preventDefault()是为了防止元素的默认动作(无论是按钮还是链接)。我假设有一个默认操作,因为您在原始添加代码中使用了return false;

(旁注:event.preventDefault() vs. return false

而且,我使用:last-child在这里,而不是:lastfor better performance

因为:last是一个jQuery的扩展,而不是部分的CSS规范,使用:last查询无法利用本地DOM querySelectorAll()方法提供的性能提升。要在使用:last选择元素时实现最佳性能,请首先使用纯CSS选择器选择元素,然后使用.filter(":last")

由于纯CSS选择器在这种情况下工作(假设您有一个格式良好的表),因此不需要.filter(':last')。克隆最后一行时,您还应该能够在#add代码中执行此操作。

1

使用jQuery .remove()

$("#remove").click(function(e) { 
    e.preventDefault(); 
    $('#mytable tbody>tr:last').remove(); 
});