2012-10-19 50 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); 
    }); 
    

    这就是插入行而不是被删除的原因。

  • 另外,用正确的代码更新您的删除行块。