2013-08-22 120 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(); 
});