删除表格行,从总和中减去

时间:2011-11-21 15:16:58

标签: javascript jquery

我对jQuery很新,下面的代码是我发现的两个不同代码的拼贴,以实现我的目标

我有一个带有图像的表,单击它时会删除一个表行,这是下面代码的第一部分。

脚本的第二部分找到所有表行的总和

我正在尝试这样做,以便当您删除行时,总和也会相应地更改。因此,当您删除表格行时,该表格行中的金额将从总计中减去。我需要根据您删除的行更改总和

删除表格行的jQuery部分

$(document).ready(function(){
        $('table#FeatureMatrix td a.delete').click(function()
        {

            {
                var id = $(this).parent().parent().attr('id');
                var data = 'id=' + id ;
                var parent = $(this).parent().parent();




                       parent.fadeOut('slow', function() 
                                           {$(this).remove();});
                    return false;       
            }



        });

计算所有表行总和的jQuery的一部分

$(document).ready(function() {
     //this calculates values automatically 
     calculateSum();

     $(".txt").live("keydown keyup", function() {
        calculateSum();
     });
});
        function calculateSum() {
            var sum = 0;
            //iterate through each textboxes and add the values
            $(".txt").each(function() {
                //add only if the value is number
                if (!isNaN(this.value) && this.value.length != 0) {
                    sum += parseFloat(this.value);

                }
                else if (this.value.length != 0){

               }
            });
            $("#sum").html(sum.toFixed(2));
        }

如果有人想在网上看到示例页面,这是链接http://webiceberg.net/Prices.php,如果您需要有关代码的更多详细信息,还可以查看页面的来源。

2 个答案:

答案 0 :(得分:1)

删除行时,您只需调用calculateSum()(同样整理一下代码!):

$('table#FeatureMatrix td a.delete').click(function() {
    var id = $(this).parent().parent().attr('id');
    var data = 'id=' + id ;
    var parent = $(this).parent().parent();

    parent.fadeOut('slow', function() {
        $(this).remove();
        calculateSum();
    });

    return false;                   
});

请注意,它必须在回调内的$(this).remove()之后完成,否则你会在实际删除行之前调用calculate。

如果您担心它直接调用calculateSum然后触发自定义事件并侦听它然后重新计算:

$('table#FeatureMatrix td a.delete').click(function() {
    var id = $(this).parent().parent().attr('id');
    var data = 'id=' + id ;
    var parent = $(this).parent().parent();

    parent.fadeOut('slow', function() {
        $(this).remove();
        $.event.trigger("rowDeleted"); // fire custom event
    });

    return false;                   
});

然后听听这个事件:

$('#sum').bind('rowDeleted', function() {    // listen for custom event
    calculateSum();
});

答案 1 :(得分:1)

尝试以下方法:

$("table#FeatureMatrix").bind("DOMSubtreeModified", function() {
    calculateSum();
});

这将在每次修改表时重新计算总和(它也适用于添加的行)