如何为表的第一行设置不同的循环动作

jQuery: How to set different action for each loop only for first row of table

本文关键字:设置 一行 循环      更新时间:2023-09-26

我是jQuery新手,希望有人能帮助我。

我有一个大的、动态创建的表,它包含3列,一列用于需要减去的金额,一列用于需要添加的金额,另一列用于每行的总和。

到目前为止,我有下面的工作按预期的
然而,在第一行,检查前一行的和是没有意义的,因为没有前一行。
只有在这种情况下,它应该采用出现在头(class = "calcStart")的第一行中的初始余额,而不是前一行的总和。

谁能告诉我怎么才能做到这一点?
此外,
如果有什么可以写得更好/更短的代码,请让我知道。

My JS:

var calcMinus, calcPlus;
var calcSum = 0;
$(document).on('keyup', '.calcMinus, .calcPlus', function(){
    $(this).closest('table tbody').find('td.calcSum').each(function(){
        calcMinus = Number( $(this).closest('tr').find('td.calcMinus').find('div').text() );
        calcPlus = Number( $(this).closest('tr').find('td.calcPlus').find('div').text() );
        if((calcMinus == '') && (calcPlus == '')){
            $(this).text('0');
        }else{
            calcSum += Number( $(this).closest('tr').prev('tr').find('td.calcSum').text() );
            calcSum -= calcMinus;
            calcSum += calcPlus;
            $(this).text(calcSum);
        }
        calcSum = 0;
    });
});

提前感谢,迈克

使用以下代码…使用:gt()选择器

: gt (0)

选择匹配目录中索引大于索引的所有元素集。

$(this).closest('table tbody').find('td.calcSum:gt(0)').each(function(){

如果你想先跳过,那么使用下面的代码

$(this).closest('table tbody').find('th:gt(0) td.calcSum').each(function(){

与OP在这里讨论的是避免第一行

的另一个选项

通过索引参数

传递每个函数的索引
$(this).closest('table tbody').find('td.calcSum').each(function(index){ 
if (index === 0){}else{} });