2012-10-19 89 views
0

我有一個editable table with rows cloned,克隆的行是具有文本區域輸入數在兩個塔可編輯的。如果您點擊編輯輸入號碼,則會有一個功能自動產生總金額並給出總金額。刪除按鈕爲表配置(可編輯)克隆行

我現在的問題是我無法正確配置克隆行的刪除按鈕。如果你嘗試一下,你會注意到不是刪除一行,而是添加了一行。請幫我解決這個問題。

這是克隆行腳本,我認爲它需要得到降低,提高

$('input:button').live('click',function(){ 
    var temprow = $('#temprow tbody').html(); 
    var tr = $(this).closest('tr'); 
    tr.after(temprow); 
}); 

$("input.tr_clone_add").live('click', function() { 
    var lastid = $('[id^="sum"]').length + 1; 
    var $tr = $(this).closest('.tr_clone'); 
    var $clone = $tr.clone(); 
    $clone.find(':text').val(''); 
    $clone.attr('id', 'sum' + lastid) 
    $tr.after($clone); 
    initEditables(); 
    tally('p#subtotal'); 
    tally('p#total'); 
}); 

$(".tr_clone_remove").live("click", function() { 
$(".tr_clone").last().remove(); 
    initEditables(); 
    tally('p#subtotal'); 
    tally('p#total'); 
}); 

initEditables(); 
tally('p#subtotal'); 
tally('p#total'); 

My Table

+0

這是因爲'.tr_clone_remove'也是一個按鈕,當它被點擊時,綁定到'input:button'的函數被觸發。 –

+0

查看http://jsfiddle.net/S3kZw/8/ –

+0

'live'已棄用。你可以用'on'代替。 –

回答

1
  1. 更改tr.after功能:

    if ($(this).val() == '+') { 
        tr.after(temprow); 
    } 
    
  2. 充分利用remove()電話爲:

    $(this).parent().parent().remove(); 
    

這裏是fiddle

+0

它的作品就像一個魅力,謝謝 – Koala7

0

編輯您的撥弄正確的解決方案:http://jsfiddle.net/Manna/S3kZw/5/

  • 由於tr_clone_remove類也是一個按鈕類型的輸入,每次單擊刪除按鈕時都會調用第一個處理程序。

    $('input:button').live('click',function(){ 
        var temprow = $('#temprow tbody').html(); 
        var tr = $(this).closest('tr'); 
        tr.after(temprow); 
    }); 
    

    這就是插入行而不是被刪除的原因。

  • 另外,用正確的代碼更新您的刪除行塊。